Replication handling during storage system transportation

ABSTRACT

Replication handling during storage system transportation, including: replicating, between a first storage system and a second storage system that are both located at a first physical location, a dataset; connecting, by the first storage system and responsive to movement of the first storage system to an intermediate physical location, to a communication network available at the intermediate physical location; and continuing, between the first storage system at the intermediate physical location and the second storage system at the first physical location, replication of the dataset over the communication network available at the intermediate physical location.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation-in-part of U.S. patent applicationSer. No. 16/937,396, filed Jul. 23, 2020.

BRIEF DESCRIPTION OF DRAWINGS

FIGS. 1A-1D illustrate example systems for data storage in accordancewith some implementations.

FIG. 2A is a perspective view of a storage cluster with multiple storagenodes and internal storage coupled to each storage node to providenetwork attached storage, in accordance with some embodiments.

FIG. 2B is a block diagram showing an interconnect switch couplingmultiple storage nodes in accordance with some embodiments.

FIG. 2C is a multiple level block diagram, showing contents of a storagenode and contents of one of the non-volatile solid state storage unitsin accordance with some embodiments.

FIG. 2D shows a storage server environment, which uses embodiments ofthe storage nodes and storage units of some previous figures inaccordance with some embodiments.

FIG. 2E is a blade hardware block diagram, showing a control plane,compute and storage planes, and authorities interacting with underlyingphysical resources, in accordance with some embodiments.

FIG. 2F depicts elasticity software layers in blades of a storagecluster, in accordance with some embodiments.

FIG. 2G depicts authorities and storage resources in blades of a storagecluster, in accordance with some embodiments.

FIG. 3A sets forth a diagram of a storage system that is coupled fordata communications with a cloud services provider in accordance withsome embodiments of the present disclosure.

FIG. 3B sets forth a diagram of a storage system in accordance with someembodiments of the present disclosure.

FIG. 3C sets forth an example of a cloud-based storage system inaccordance with some embodiments of the present disclosure.

FIG. 3D illustrates an exemplary computing device that may bespecifically configured to perform one or more of the processesdescribed herein.

FIG. 4A illustrates an exemplary computing environment for synchronousreplication in accordance with some embodiments.

FIG. 4B illustrates an example metadata model in accordance with someembodiments.

FIGS. 5A and 5B set forth flowcharts for synchronous replication inaccordance with some embodiments.

FIGS. 6A and 6B illustrate an exemplary computing environment for auniform model for distinct types of data replication in accordance withsome embodiments.

FIGS. 7 and 8 illustrate example control flows for selectivecommunication protocol layering for synchronous replication inaccordance with some embodiments.

FIGS. 9-25 set forth flowcharts illustrating methods for replicationhandling among distinct networks according to some embodiments of thepresent disclosure.

FIGS. 26A-32 set forth flowcharts illustrating methods for replicationhandling during storage system transportation according to someembodiments of the present disclosure.

DESCRIPTION OF EMBODIMENTS

Example methods, apparatus, and products for replication handling induring storage system transportation in accordance with embodiments ofthe present disclosure are described with reference to the accompanyingdrawings, beginning with FIG. 1A. FIG. 1A illustrates an example systemfor data storage, in accordance with some implementations. System 100(also referred to as “storage system” herein) includes numerous elementsfor purposes of illustration rather than limitation. It may be notedthat system 100 may include the same, more, or fewer elements configuredin the same or different manner in other implementations.

System 100 includes a number of computing devices 164A-B. Computingdevices (also referred to as “client devices” herein) may be embodied,for example, a server in a data center, a workstation, a personalcomputer, a notebook, or the like. Computing devices 164A-B may becoupled for data communications to one or more storage arrays 102A-Bthrough a storage area network (‘SAN’) 158 or a local area network(‘LAN’) 160.

The SAN 158 may be implemented with a variety of data communicationsfabrics, devices, and protocols. For example, the fabrics for SAN 158may include Fibre Channel, Ethernet, Infiniband, Serial Attached SmallComputer System Interface (‘SAS’), or the like. Data communicationsprotocols for use with SAN 158 may include Advanced TechnologyAttachment (‘ATA’), Fibre Channel Protocol, Small Computer SystemInterface (‘SCSI’), Internet Small Computer System Interface (‘iSCSI’),HyperSCSI, Non-Volatile Memory Express (‘NVMe’) over Fabrics, or thelike. It may be noted that SAN 158 is provided for illustration, ratherthan limitation. Other data communication couplings may be implementedbetween computing devices 164A-B and storage arrays 102A-B.

The LAN 160 may also be implemented with a variety of fabrics, devices,and protocols. For example, the fabrics for LAN 160 may include Ethernet(802.3), wireless (802.11), or the like. Data communication protocolsfor use in LAN 160 may include Transmission Control Protocol (‘TCP’),User Datagram Protocol (‘UDP’), Internet Protocol (IF), HyperTextTransfer Protocol (‘HTTP’), Wireless Access Protocol (‘WAP’), HandheldDevice Transport Protocol (‘HDTP’), Session Initiation Protocol (SIT),Real Time Protocol (‘RTP’), or the like.

Storage arrays 102A-B may provide persistent data storage for thecomputing devices 164A-B. Storage array 102A may be contained in achassis (not shown), and storage array 102B may be contained in anotherchassis (not shown), in implementations. Storage array 102A and 102B mayinclude one or more storage array controllers 110A-D (also referred toas “controller” herein). A storage array controller 110A-D may beembodied as a module of automated computing machinery comprisingcomputer hardware, computer software, or a combination of computerhardware and software. In some implementations, the storage arraycontrollers 110A-D may be configured to carry out various storage tasks.Storage tasks may include writing data received from the computingdevices 164A-B to storage array 102A-B, erasing data from storage array102A-B, retrieving data from storage array 102A-B and providing data tocomputing devices 164A-B, monitoring and reporting of disk utilizationand performance, performing redundancy operations, such as RedundantArray of Independent Drives (‘RAID’) or RAID-like data redundancyoperations, compressing data, encrypting data, and so forth.

Storage array controller 110A-D may be implemented in a variety of ways,including as a Field Programmable Gate Array (‘FPGA’), a ProgrammableLogic Chip (‘PLC’), an Application Specific Integrated Circuit (‘ASIC’),System-on-Chip (‘SOC’), or any computing device that includes discretecomponents such as a processing device, central processing unit,computer memory, or various adapters. Storage array controller 110A-Dmay include, for example, a data communications adapter configured tosupport communications via the SAN 158 or LAN 160. In someimplementations, storage array controller 110A-D may be independentlycoupled to the LAN 160. In implementations, storage array controller110A-D may include an I/O controller or the like that couples thestorage array controller 110A-D for data communications, through amidplane (not shown), to a persistent storage resource 170A-B (alsoreferred to as a “storage resource” herein). The persistent storageresource 170A-B main include any number of storage drives 171A-F (alsoreferred to as “storage devices” herein) and any number of non-volatileRandom Access Memory (‘NVRAM’) devices (not shown).

In some implementations, the NVRAM devices of a persistent storageresource 170A-B may be configured to receive, from the storage arraycontroller 110A-D, data to be stored in the storage drives 171A-F. Insome examples, the data may originate from computing devices 164A-B. Insome examples, writing data to the NVRAM device may be carried out morequickly than directly writing data to the storage drive 171A-F. Inimplementations, the storage array controller 110A-D may be configuredto utilize the NVRAM devices as a quickly accessible buffer for datadestined to be written to the storage drives 171A-F. Latency for writerequests using NVRAM devices as a buffer may be improved relative to asystem in which a storage array controller 110A-D writes data directlyto the storage drives 171A-F. In some implementations, the NVRAM devicesmay be implemented with computer memory in the form of high bandwidth,low latency RAM. The NVRAM device is referred to as “non-volatile”because the NVRAM device may receive or include a unique power sourcethat maintains the state of the RAM after main power loss to the NVRAMdevice. Such a power source may be a battery, one or more capacitors, orthe like. In response to a power loss, the NVRAM device may beconfigured to write the contents of the RAM to a persistent storage,such as the storage drives 171A-F.

In implementations, storage drive 171A-F may refer to any deviceconfigured to record data persistently, where “persistently” or“persistent” refers as to a device's ability to maintain recorded dataafter loss of power. In some implementations, storage drive 171A-F maycorrespond to non-disk storage media. For example, the storage drive171A-F may be one or more solid-state drives (‘SSDs’), flash memorybased storage, any type of solid-state non-volatile memory, or any othertype of non-mechanical storage device. In other implementations, storagedrive 171A-F may include mechanical or spinning hard disk, such ashard-disk drives (‘HDD’).

In some implementations, the storage array controllers 110A-D may beconfigured for offloading device management responsibilities fromstorage drive 171A-F in storage array 102A-B. For example, storage arraycontrollers 110A-D may manage control information that may describe thestate of one or more memory blocks in the storage drives 171A-F. Thecontrol information may indicate, for example, that a particular memoryblock has failed and should no longer be written to, that a particularmemory block contains boot code for a storage array controller 110A-D,the number of program-erase (‘P/E’) cycles that have been performed on aparticular memory block, the age of data stored in a particular memoryblock, the type of data that is stored in a particular memory block, andso forth. In some implementations, the control information may be storedwith an associated memory block as metadata. In other implementations,the control information for the storage drives 171A-F may be stored inone or more particular memory blocks of the storage drives 171A-F thatare selected by the storage array controller 110A-D. The selected memoryblocks may be tagged with an identifier indicating that the selectedmemory block contains control information. The identifier may beutilized by the storage array controllers 110A-D in conjunction withstorage drives 171A-F to quickly identify the memory blocks that containcontrol information. For example, the storage controllers 110A-D mayissue a command to locate memory blocks that contain controlinformation. It may be noted that control information may be so largethat parts of the control information may be stored in multiplelocations, that the control information may be stored in multiplelocations for purposes of redundancy, for example, or that the controlinformation may otherwise be distributed across multiple memory blocksin the storage drive 171A-F.

In implementations, storage array controllers 110A-D may offload devicemanagement responsibilities from storage drives 171A-F of storage array102A-B by retrieving, from the storage drives 171A-F, controlinformation describing the state of one or more memory blocks in thestorage drives 171A-F. Retrieving the control information from thestorage drives 171A-F may be carried out, for example, by the storagearray controller 110A-D querying the storage drives 171A-F for thelocation of control information for a particular storage drive 171A-F.The storage drives 171A-F may be configured to execute instructions thatenable the storage drive 171A-F to identify the location of the controlinformation. The instructions may be executed by a controller (notshown) associated with or otherwise located on the storage drive 171A-Fand may cause the storage drive 171A-F to scan a portion of each memoryblock to identify the memory blocks that store control information forthe storage drives 171A-F. The storage drives 171A-F may respond bysending a response message to the storage array controller 110A-D thatincludes the location of control information for the storage drive171A-F. Responsive to receiving the response message, storage arraycontrollers 110A-D may issue a request to read data stored at theaddress associated with the location of control information for thestorage drives 171A-F.

In other implementations, the storage array controllers 110A-D mayfurther offload device management responsibilities from storage drives171A-F by performing, in response to receiving the control information,a storage drive management operation. A storage drive managementoperation may include, for example, an operation that is typicallyperformed by the storage drive 171A-F (e.g., the controller (not shown)associated with a particular storage drive 171A-F). A storage drivemanagement operation may include, for example, ensuring that data is notwritten to failed memory blocks within the storage drive 171A-F,ensuring that data is written to memory blocks within the storage drive171A-F in such a way that adequate wear leveling is achieved, and soforth.

In implementations, storage array 102A-B may implement two or morestorage array controllers 110A-D. For example, storage array 102A mayinclude storage array controllers 110A and storage array controllers110B. At a given instance, a single storage array controller 110A-D(e.g., storage array controller 110A) of a storage system 100 may bedesignated with primary status (also referred to as “primary controller”herein), and other storage array controllers 110A-D (e.g., storage arraycontroller 110A) may be designated with secondary status (also referredto as “secondary controller” herein). The primary controller may haveparticular rights, such as permission to alter data in persistentstorage resource 170A-B (e.g., writing data to persistent storageresource 170A-B). At least some of the rights of the primary controllermay supersede the rights of the secondary controller. For instance, thesecondary controller may not have permission to alter data in persistentstorage resource 170A-B when the primary controller has the right. Thestatus of storage array controllers 110A-D may change. For example,storage array controller 110A may be designated with secondary status,and storage array controller 110B may be designated with primary status.

In some implementations, a primary controller, such as storage arraycontroller 110A, may serve as the primary controller for one or morestorage arrays 102A-B, and a second controller, such as storage arraycontroller 110B, may serve as the secondary controller for the one ormore storage arrays 102A-B. For example, storage array controller 110Amay be the primary controller for storage array 102A and storage array102B, and storage array controller 110B may be the secondary controllerfor storage array 102A and 102B. In some implementations, storage arraycontrollers 110C and 110D (also referred to as “storage processingmodules”) may neither have primary or secondary status. Storage arraycontrollers 110C and 110D, implemented as storage processing modules,may act as a communication interface between the primary and secondarycontrollers (e.g., storage array controllers 110A and 110B,respectively) and storage array 102B. For example, storage arraycontroller 110A of storage array 102A may send a write request, via SAN158, to storage array 102B. The write request may be received by bothstorage array controllers 110C and 110D of storage array 102B. Storagearray controllers 110C and 110D facilitate the communication, e.g., sendthe write request to the appropriate storage drive 171A-F. It may benoted that in some implementations storage processing modules may beused to increase the number of storage drives controlled by the primaryand secondary controllers.

In implementations, storage array controllers 110A-D are communicativelycoupled, via a midplane (not shown), to one or more storage drives171A-F and to one or more NVRAM devices (not shown) that are included aspart of a storage array 102A-B. The storage array controllers 110A-D maybe coupled to the midplane via one or more data communication links andthe midplane may be coupled to the storage drives 171A-F and the NVRAMdevices via one or more data communications links. The datacommunications links described herein are collectively illustrated bydata communications links 108A-D and may include a Peripheral ComponentInterconnect Express (‘PCIe’) bus, for example.

FIG. 1B illustrates an example system for data storage, in accordancewith some implementations. Storage array controller 101 illustrated inFIG. 1B may be similar to the storage array controllers 110A-D describedwith respect to FIG. 1A. In one example, storage array controller 101may be similar to storage array controller 110A or storage arraycontroller 110B. Storage array controller 101 includes numerous elementsfor purposes of illustration rather than limitation. It may be notedthat storage array controller 101 may include the same, more, or fewerelements configured in the same or different manner in otherimplementations. It may be noted that elements of FIG. 1A may beincluded below to help illustrate features of storage array controller101.

Storage array controller 101 may include one or more processing devices104 and random access memory (‘RAM’) 111. Processing device 104 (orcontroller 101) represents one or more general-purpose processingdevices such as a microprocessor, central processing unit, or the like.More particularly, the processing device 104 (or controller 101) may bea complex instruction set computing (‘CISC’) microprocessor, reducedinstruction set computing (‘RISC’) microprocessor, very long instructionword (‘VLIW’) microprocessor, or a processor implementing otherinstruction sets or processors implementing a combination of instructionsets. The processing device 104 (or controller 101) may also be one ormore special-purpose processing devices such as an ASIC, an FPGA, adigital signal processor (‘DSP’), network processor, or the like.

The processing device 104 may be connected to the RAM 111 via a datacommunications link 106, which may be embodied as a high speed memorybus such as a Double-Data Rate 4 (‘DDR4’) bus. Stored in RAM 111 is anoperating system 112. In some implementations, instructions 113 arestored in RAM 111. Instructions 113 may include computer programinstructions for performing operations in in a direct-mapped flashstorage system. In one embodiment, a direct-mapped flash storage systemis one that that addresses data blocks within flash drives directly andwithout an address translation performed by the storage controllers ofthe flash drives.

In implementations, storage array controller 101 includes one or morehost bus adapters 103A-C that are coupled to the processing device 104via a data communications link 105A-C. In implementations, host busadapters 103A-C may be computer hardware that connects a host system(e.g., the storage array controller) to other network and storagearrays. In some examples, host bus adapters 103A-C may be a FibreChannel adapter that enables the storage array controller 101 to connectto a SAN, an Ethernet adapter that enables the storage array controller101 to connect to a LAN, or the like. Host bus adapters 103A-C may becoupled to the processing device 104 via a data communications link105A-C such as, for example, a PCIe bus.

In implementations, storage array controller 101 may include a host busadapter 114 that is coupled to an expander 115. The expander 115 may beused to attach a host system to a larger number of storage drives. Theexpander 115 may, for example, be a SAS expander utilized to enable thehost bus adapter 114 to attach to storage drives in an implementationwhere the host bus adapter 114 is embodied as a SAS controller.

In implementations, storage array controller 101 may include a switch116 coupled to the processing device 104 via a data communications link109. The switch 116 may be a computer hardware device that can createmultiple endpoints out of a single endpoint, thereby enabling multipledevices to share a single endpoint. The switch 116 may, for example, bea PCIe switch that is coupled to a PCIe bus (e.g., data communicationslink 109) and presents multiple PCIe connection points to the midplane.

In implementations, storage array controller 101 includes a datacommunications link 107 for coupling the storage array controller 101 toother storage array controllers. In some examples, data communicationslink 107 may be a QuickPath Interconnect (QPI) interconnect.

A traditional storage system that uses traditional flash drives mayimplement a process across the flash drives that are part of thetraditional storage system. For example, a higher level process of thestorage system may initiate and control a process across the flashdrives. However, a flash drive of the traditional storage system mayinclude its own storage controller that also performs the process. Thus,for the traditional storage system, a higher level process (e.g.,initiated by the storage system) and a lower level process (e.g.,initiated by a storage controller of the storage system) may both beperformed.

To resolve various deficiencies of a traditional storage system,operations may be performed by higher level processes and not by thelower level processes. For example, the flash storage system may includeflash drives that do not include storage controllers that provide theprocess. Thus, the operating system of the flash storage system itselfmay initiate and control the process. This may be accomplished by adirect-mapped flash storage system that addresses data blocks within theflash drives directly and without an address translation performed bythe storage controllers of the flash drives.

The operating system of the flash storage system may identify andmaintain a list of allocation units across multiple flash drives of theflash storage system. The allocation units may be entire erase blocks ormultiple erase blocks. The operating system may maintain a map oraddress range that directly maps addresses to erase blocks of the flashdrives of the flash storage system.

Direct mapping to the erase blocks of the flash drives may be used torewrite data and erase data. For example, the operations may beperformed on one or more allocation units that include a first data anda second data where the first data is to be retained and the second datais no longer being used by the flash storage system. The operatingsystem may initiate the process to write the first data to new locationswithin other allocation units and erasing the second data and markingthe allocation units as being available for use for subsequent data.Thus, the process may only be performed by the higher level operatingsystem of the flash storage system without an additional lower levelprocess being performed by controllers of the flash drives.

Advantages of the process being performed only by the operating systemof the flash storage system include increased reliability of the flashdrives of the flash storage system as unnecessary or redundant writeoperations are not being performed during the process. One possiblepoint of novelty here is the concept of initiating and controlling theprocess at the operating system of the flash storage system. Inaddition, the process can be controlled by the operating system acrossmultiple flash drives. This is contrast to the process being performedby a storage controller of a flash drive.

A storage system can consist of two storage array controllers that sharea set of drives for failover purposes, or it could consist of a singlestorage array controller that provides a storage service that utilizesmultiple drives, or it could consist of a distributed network of storagearray controllers each with some number of drives or some amount ofFlash storage where the storage array controllers in the networkcollaborate to provide a complete storage service and collaborate onvarious aspects of a storage service including storage allocation andgarbage collection.

FIG. 1C illustrates a third example system 117 for data storage inaccordance with some implementations. System 117 (also referred to as“storage system” herein) includes numerous elements for purposes ofillustration rather than limitation. It may be noted that system 117 mayinclude the same, more, or fewer elements configured in the same ordifferent manner in other implementations.

In one embodiment, system 117 includes a dual Peripheral ComponentInterconnect (‘PCI’) flash storage device 118 with separatelyaddressable fast write storage. System 117 may include a storagecontroller 119. In one embodiment, storage controller 119A-D may be aCPU, ASIC, FPGA, or any other circuitry that may implement controlstructures necessary according to the present disclosure. In oneembodiment, system 117 includes flash memory devices (e.g., includingflash memory devices 120 a-n), operatively coupled to various channelsof the storage device controller 119. Flash memory devices 120 a-n, maybe presented to the controller 119A-D as an addressable collection ofFlash pages, erase blocks, and/or control elements sufficient to allowthe storage device controller 119A-D to program and retrieve variousaspects of the Flash. In one embodiment, storage device controller119A-D may perform operations on flash memory devices 120 a-n includingstoring and retrieving data content of pages, arranging and erasing anyblocks, tracking statistics related to the use and reuse of Flash memorypages, erase blocks, and cells, tracking and predicting error codes andfaults within the Flash memory, controlling voltage levels associatedwith programming and retrieving contents of Flash cells, etc.

In one embodiment, system 117 may include RAM 121 to store separatelyaddressable fast-write data. In one embodiment, RAM 121 may be one ormore separate discrete devices. In another embodiment, RAM 121 may beintegrated into storage device controller 119A-D or multiple storagedevice controllers. The RAM 121 may be utilized for other purposes aswell, such as temporary program memory for a processing device (e.g., aCPU) in the storage device controller 119.

In one embodiment, system 117 may include a stored energy device 122,such as a rechargeable battery or a capacitor. Stored energy device 122may store energy sufficient to power the storage device controller 119,some amount of the RAM (e.g., RAM 121), and some amount of Flash memory(e.g., Flash memory 120 a-120 n) for sufficient time to write thecontents of RAM to Flash memory. In one embodiment, storage devicecontroller 119A-D may write the contents of RAM to Flash Memory if thestorage device controller detects loss of external power.

In one embodiment, system 117 includes two data communications links 123a, 123 b. In one embodiment, data communications links 123 a, 123 b maybe PCI interfaces. In another embodiment, data communications links 123a, 123 b may be based on other communications standards (e.g.,HyperTransport, InfiniBand, etc.). Data communications links 123 a, 123b may be based on non-volatile memory express (‘NVMe’) or NVMe overfabrics (‘NVMf’) specifications that allow external connection to thestorage device controller 119A-D from other components in the storagesystem 117. It should be noted that data communications links may beinterchangeably referred to herein as PCI buses for convenience.

System 117 may also include an external power source (not shown), whichmay be provided over one or both data communications links 123 a, 123 b,or which may be provided separately. An alternative embodiment includesa separate Flash memory (not shown) dedicated for use in storing thecontent of RAM 121. The storage device controller 119A-D may present alogical device over a PCI bus which may include an addressablefast-write logical device, or a distinct part of the logical addressspace of the storage device 118, which may be presented as PCI memory oras persistent storage. In one embodiment, operations to store into thedevice are directed into the RAM 121. On power failure, the storagedevice controller 119A-D may write stored content associated with theaddressable fast-write logical storage to Flash memory (e.g., Flashmemory 120 a-n) for long-term persistent storage.

In one embodiment, the logical device may include some presentation ofsome or all of the content of the Flash memory devices 120 a-n, wherethat presentation allows a storage system including a storage device 118(e.g., storage system 117) to directly address Flash memory pages anddirectly reprogram erase blocks from storage system components that areexternal to the storage device through the PCI bus. The presentation mayalso allow one or more of the external components to control andretrieve other aspects of the Flash memory including some or all of:tracking statistics related to use and reuse of Flash memory pages,erase blocks, and cells across all the Flash memory devices; trackingand predicting error codes and faults within and across the Flash memorydevices; controlling voltage levels associated with programming andretrieving contents of Flash cells; etc.

In one embodiment, the stored energy device 122 may be sufficient toensure completion of in-progress operations to the Flash memory devices120 a-120 n stored energy device 122 may power storage device controller119A-D and associated Flash memory devices (e.g., 120 a-n) for thoseoperations, as well as for the storing of fast-write RAM to Flashmemory. Stored energy device 122 may be used to store accumulatedstatistics and other parameters kept and tracked by the Flash memorydevices 120 a-n and/or the storage device controller 119. Separatecapacitors or stored energy devices (such as smaller capacitors near orembedded within the Flash memory devices themselves) may be used forsome or all of the operations described herein.

Various schemes may be used to track and optimize the life span of thestored energy component, such as adjusting voltage levels over time,partially discharging the storage energy device 122 to measurecorresponding discharge characteristics, etc. If the available energydecreases over time, the effective available capacity of the addressablefast-write storage may be decreased to ensure that it can be writtensafely based on the currently available stored energy.

FIG. 1D illustrates a third example system 124 for data storage inaccordance with some implementations. In one embodiment, system 124includes storage controllers 125 a, 125 b. In one embodiment, storagecontrollers 125 a, 125 b are operatively coupled to Dual PCI storagedevices 119 a, 119 b and 119 c, 119 d, respectively. Storage controllers125 a, 125 b may be operatively coupled (e.g., via a storage network130) to some number of host computers 127 a-n.

In one embodiment, two storage controllers (e.g., 125 a and 125 b)provide storage services, such as a SCS) block storage array, a fileserver, an object server, a database, or data analytics service, etc.The storage controllers 125 a, 125 b may provide services through somenumber of network interfaces (e.g., 126 a-d) to host computers 127 a-noutside of the storage system 124. Storage controllers 125 a, 125 b mayprovide integrated services or an application entirely within thestorage system 124, forming a converged storage and compute system. Thestorage controllers 125 a, 125 b may utilize the fast write memorywithin or across storage devices 119 a-d to journal in progressoperations to ensure the operations are not lost on a power failure,storage controller removal, storage controller or storage systemshutdown, or some fault of one or more software or hardware componentswithin the storage system 124.

In one embodiment, controllers 125 a, 125 b operate as PCI masters toone or the other PCI buses 128 a, 128 b. In another embodiment, 128 aand 128 b may be based on other communications standards (e.g.,HyperTransport, InfiniBand, etc.). Other storage system embodiments mayoperate storage controllers 125 a, 125 b as multi-masters for both PCIbuses 128 a, 128 b. Alternately, a PCI/NVMe/NVMf switchinginfrastructure or fabric may connect multiple storage controllers. Somestorage system embodiments may allow storage devices to communicate witheach other directly rather than communicating only with storagecontrollers. In one embodiment, a storage device controller 119 a may beoperable under direction from a storage controller 125 a to synthesizeand transfer data to be stored into Flash memory devices from data thathas been stored in RAM (e.g., RAM 121 of FIG. 1C). For example, arecalculated version of RAM content may be transferred after a storagecontroller has determined that an operation has fully committed acrossthe storage system, or when fast-write memory on the device has reacheda certain used capacity, or after a certain amount of time, to ensureimprove safety of the data or to release addressable fast-write capacityfor reuse. This mechanism may be used, for example, to avoid a secondtransfer over a bus (e.g., 128 a, 128 b) from the storage controllers125 a, 125 b. In one embodiment, a recalculation may include compressingdata, attaching indexing or other metadata, combining multiple datasegments together, performing erasure code calculations, etc.

In one embodiment, under direction from a storage controller 125 a, 125b, a storage device controller 119 a, 119 b may be operable to calculateand transfer data to other storage devices from data stored in RAM(e.g., RAM 121 of FIG. 1C) without involvement of the storagecontrollers 125 a, 125 b. This operation may be used to mirror datastored in one controller 125 a to another controller 125 b, or it couldbe used to offload compression, data aggregation, and/or erasure codingcalculations and transfers to storage devices to reduce load on storagecontrollers or the storage controller interface 129 a, 129 b to the PCIbus 128 a, 128 b.

A storage device controller 119A-D may include mechanisms forimplementing high availability primitives for use by other parts of astorage system external to the Dual PCI storage device 118. For example,reservation or exclusion primitives may be provided so that, in astorage system with two storage controllers providing a highly availablestorage service, one storage controller may prevent the other storagecontroller from accessing or continuing to access the storage device.This could be used, for example, in cases where one controller detectsthat the other controller is not functioning properly or where theinterconnect between the two storage controllers may itself not befunctioning properly.

In one embodiment, a storage system for use with Dual PCI direct mappedstorage devices with separately addressable fast write storage includessystems that manage erase blocks or groups of erase blocks as allocationunits for storing data on behalf of the storage service, or for storingmetadata (e.g., indexes, logs, etc.) associated with the storageservice, or for proper management of the storage system itself. Flashpages, which may be a few kilobytes in size, may be written as dataarrives or as the storage system is to persist data for long intervalsof time (e.g., above a defined threshold of time). To commit data morequickly, or to reduce the number of writes to the Flash memory devices,the storage controllers may first write data into the separatelyaddressable fast write storage on one more storage devices.

In one embodiment, the storage controllers 125 a, 125 b may initiate theuse of erase blocks within and across storage devices (e.g., 118) inaccordance with an age and expected remaining lifespan of the storagedevices, or based on other statistics. The storage controllers 125 a,125 b may initiate garbage collection and data migration data betweenstorage devices in accordance with pages that are no longer needed aswell as to manage Flash page and erase block lifespans and to manageoverall system performance.

In one embodiment, the storage system 124 may utilize mirroring and/orerasure coding schemes as part of storing data into addressable fastwrite storage and/or as part of writing data into allocation unitsassociated with erase blocks. Erasure codes may be used across storagedevices, as well as within erase blocks or allocation units, or withinand across Flash memory devices on a single storage device, to provideredundancy against single or multiple storage device failures or toprotect against internal corruptions of Flash memory pages resultingfrom Flash memory operations or from degradation of Flash memory cells.Mirroring and erasure coding at various levels may be used to recoverfrom multiple types of failures that occur separately or in combination.

The embodiments depicted with reference to FIGS. 2A-G illustrate astorage cluster that stores user data, such as user data originatingfrom one or more user or client systems or other sources external to thestorage cluster. The storage cluster distributes user data acrossstorage nodes housed within a chassis, or across multiple chassis, usingerasure coding and redundant copies of metadata. Erasure coding refersto a method of data protection or reconstruction in which data is storedacross a set of different locations, such as disks, storage nodes orgeographic locations. Flash memory is one type of solid-state memorythat may be integrated with the embodiments, although the embodimentsmay be extended to other types of solid-state memory or other storagemedium, including non-solid state memory. Control of storage locationsand workloads are distributed across the storage locations in aclustered peer-to-peer system. Tasks such as mediating communicationsbetween the various storage nodes, detecting when a storage node hasbecome unavailable, and balancing I/Os (inputs and outputs) across thevarious storage nodes, are all handled on a distributed basis. Data islaid out or distributed across multiple storage nodes in data fragmentsor stripes that support data recovery in some embodiments. Ownership ofdata can be reassigned within a cluster, independent of input and outputpatterns. This architecture described in more detail below allows astorage node in the cluster to fail, with the system remainingoperational, since the data can be reconstructed from other storagenodes and thus remain available for input and output operations. Invarious embodiments, a storage node may be referred to as a clusternode, a blade, or a server.

The storage cluster may be contained within a chassis, i.e., anenclosure housing one or more storage nodes. A mechanism to providepower to each storage node, such as a power distribution bus, and acommunication mechanism, such as a communication bus that enablescommunication between the storage nodes are included within the chassis.The storage cluster can run as an independent system in one locationaccording to some embodiments. In one embodiment, a chassis contains atleast two instances of both the power distribution and the communicationbus which may be enabled or disabled independently. The internalcommunication bus may be an Ethernet bus, however, other technologiessuch as PCIe, InfiniBand, and others, are equally suitable. The chassisprovides a port for an external communication bus for enablingcommunication between multiple chassis, directly or through a switch,and with client systems. The external communication may use a technologysuch as Ethernet, InfiniBand, Fibre Channel, etc. In some embodiments,the external communication bus uses different communication bustechnologies for inter-chassis and client communication. If a switch isdeployed within or between chassis, the switch may act as a translationbetween multiple protocols or technologies. When multiple chassis areconnected to define a storage cluster, the storage cluster may beaccessed by a client using either proprietary interfaces or standardinterfaces such as network file system (‘NFS’), common internet filesystem (‘CIFS’), small computer system interface (‘SCSI’) or hypertexttransfer protocol (‘HTTP’). Translation from the client protocol mayoccur at the switch, chassis external communication bus or within eachstorage node. In some embodiments, multiple chassis may be coupled orconnected to each other through an aggregator switch. A portion and/orall of the coupled or connected chassis may be designated as a storagecluster. As discussed above, each chassis can have multiple blades, eachblade has a media access control (‘MAC’) address, but the storagecluster is presented to an external network as having a single clusterIP address and a single MAC address in some embodiments.

Each storage node may be one or more storage servers and each storageserver is connected to one or more non-volatile solid state memoryunits, which may be referred to as storage units or storage devices. Oneembodiment includes a single storage server in each storage node andbetween one to eight non-volatile solid state memory units, however thisone example is not meant to be limiting. The storage server may includea processor, DRAM and interfaces for the internal communication bus andpower distribution for each of the power buses. Inside the storage node,the interfaces and storage unit share a communication bus, e.g., PCIExpress, in some embodiments. The non-volatile solid state memory unitsmay directly access the internal communication bus interface through astorage node communication bus, or request the storage node to accessthe bus interface. The non-volatile solid state memory unit contains anembedded CPU, solid state storage controller, and a quantity of solidstate mass storage, e.g., between 2-32 terabytes (‘TB’) in someembodiments. An embedded volatile storage medium, such as DRAM, and anenergy reserve apparatus are included in the non-volatile solid statememory unit. In some embodiments, the energy reserve apparatus is acapacitor, super-capacitor, or battery that enables transferring asubset of DRAM contents to a stable storage medium in the case of powerloss. In some embodiments, the non-volatile solid state memory unit isconstructed with a storage class memory, such as phase change ormagnetoresistive random access memory (‘MRAM’) that substitutes for DRAMand enables a reduced power hold-up apparatus.

One of many features of the storage nodes and non-volatile solid statestorage is the ability to proactively rebuild data in a storage cluster.The storage nodes and non-volatile solid state storage can determinewhen a storage node or non-volatile solid state storage in the storagecluster is unreachable, independent of whether there is an attempt toread data involving that storage node or non-volatile solid statestorage. The storage nodes and non-volatile solid state storage thencooperate to recover and rebuild the data in at least partially newlocations. This constitutes a proactive rebuild, in that the systemrebuilds data without waiting until the data is needed for a read accessinitiated from a client system employing the storage cluster. These andfurther details of the storage memory and operation thereof arediscussed below.

FIG. 2A is a perspective view of a storage cluster 161, with multiplestorage nodes 150 and internal solid-state memory coupled to eachstorage node to provide network attached storage or storage areanetwork, in accordance with some embodiments. A network attachedstorage, storage area network, or a storage cluster, or other storagememory, could include one or more storage clusters 161, each having oneor more storage nodes 150, in a flexible and reconfigurable arrangementof both the physical components and the amount of storage memoryprovided thereby. The storage cluster 161 is designed to fit in a rack,and one or more racks can be set up and populated as desired for thestorage memory. The storage cluster 161 has a chassis 138 havingmultiple slots 142. It should be appreciated that chassis 138 may bereferred to as a housing, enclosure, or rack unit. In one embodiment,the chassis 138 has fourteen slots 142, although other numbers of slotsare readily devised. For example, some embodiments have four slots,eight slots, sixteen slots, thirty-two slots, or other suitable numberof slots. Each slot 142 can accommodate one storage node 150 in someembodiments. Chassis 138 includes flaps 148 that can be utilized tomount the chassis 138 on a rack. Fans 144 provide air circulation forcooling of the storage nodes 150 and components thereof, although othercooling components could be used, or an embodiment could be devisedwithout cooling components. A switch fabric 146 couples storage nodes150 within chassis 138 together and to a network for communication tothe memory. In an embodiment depicted in herein, the slots 142 to theleft of the switch fabric 146 and fans 144 are shown occupied by storagenodes 150, while the slots 142 to the right of the switch fabric 146 andfans 144 are empty and available for insertion of storage node 150 forillustrative purposes. This configuration is one example, and one ormore storage nodes 150 could occupy the slots 142 in various furtherarrangements. The storage node arrangements need not be sequential oradjacent in some embodiments. Storage nodes 150 are hot pluggable,meaning that a storage node 150 can be inserted into a slot 142 in thechassis 138, or removed from a slot 142, without stopping or poweringdown the system. Upon insertion or removal of storage node 150 from slot142, the system automatically reconfigures in order to recognize andadapt to the change. Reconfiguration, in some embodiments, includesrestoring redundancy and/or rebalancing data or load.

Each storage node 150 can have multiple components. In the embodimentshown here, the storage node 150 includes a printed circuit board 159populated by a CPU 156, i.e., processor, a memory 154 coupled to the CPU156, and a non-volatile solid state storage 152 coupled to the CPU 156,although other mountings and/or components could be used in furtherembodiments. The memory 154 has instructions which are executed by theCPU 156 and/or data operated on by the CPU 156. As further explainedbelow, the non-volatile solid state storage 152 includes flash or, infurther embodiments, other types of solid-state memory.

Referring to FIG. 2A, storage cluster 161 is scalable, meaning thatstorage capacity with non-uniform storage sizes is readily added, asdescribed above. One or more storage nodes 150 can be plugged into orremoved from each chassis and the storage cluster self-configures insome embodiments. Plug-in storage nodes 150, whether installed in achassis as delivered or later added, can have different sizes. Forexample, in one embodiment a storage node 150 can have any multiple of 4TB, e.g., 8 TB, 12 TB, 16 TB, 32 TB, etc. In further embodiments, astorage node 150 could have any multiple of other storage amounts orcapacities. Storage capacity of each storage node 150 is broadcast, andinfluences decisions of how to stripe the data. For maximum storageefficiency, an embodiment can self-configure as wide as possible in thestripe, subject to a predetermined requirement of continued operationwith loss of up to one, or up to two, non-volatile solid state storageunits 152 or storage nodes 150 within the chassis.

FIG. 2B is a block diagram showing a communications interconnect 173 andpower distribution bus 172 coupling multiple storage nodes 150.Referring back to FIG. 2A, the communications interconnect 173 can beincluded in or implemented with the switch fabric 146 in someembodiments. Where multiple storage clusters 161 occupy a rack, thecommunications interconnect 173 can be included in or implemented with atop of rack switch, in some embodiments. As illustrated in FIG. 2B,storage cluster 161 is enclosed within a single chassis 138. Externalport 176 is coupled to storage nodes 150 through communicationsinterconnect 173, while external port 174 is coupled directly to astorage node. External power port 178 is coupled to power distributionbus 172. Storage nodes 150 may include varying amounts and differingcapacities of non-volatile solid state storage 152 as described withreference to FIG. 2A. In addition, one or more storage nodes 150 may bea compute only storage node as illustrated in FIG. 2B. Authorities 168are implemented on the non-volatile solid state storages 152, forexample as lists or other data structures stored in memory. In someembodiments the authorities are stored within the non-volatile solidstate storage 152 and supported by software executing on a controller orother processor of the non-volatile solid state storage 152. In afurther embodiment, authorities 168 are implemented on the storage nodes150, for example as lists or other data structures stored in the memory154 and supported by software executing on the CPU 156 of the storagenode 150. Authorities 168 control how and where data is stored in thenon-volatile solid state storages 152 in some embodiments. This controlassists in determining which type of erasure coding scheme is applied tothe data, and which storage nodes 150 have which portions of the data.Each authority 168 may be assigned to a non-volatile solid state storage152. Each authority may control a range of inode numbers, segmentnumbers, or other data identifiers which are assigned to data by a filesystem, by the storage nodes 150, or by the non-volatile solid statestorage 152, in various embodiments.

Every piece of data, and every piece of metadata, has redundancy in thesystem in some embodiments. In addition, every piece of data and everypiece of metadata has an owner, which may be referred to as anauthority. If that authority is unreachable, for example through failureof a storage node, there is a plan of succession for how to find thatdata or that metadata. In various embodiments, there are redundantcopies of authorities 168. Authorities 168 have a relationship tostorage nodes 150 and non-volatile solid state storage 152 in someembodiments. Each authority 168, covering a range of data segmentnumbers or other identifiers of the data, may be assigned to a specificnon-volatile solid state storage 152. In some embodiments theauthorities 168 for all of such ranges are distributed over thenon-volatile solid state storages 152 of a storage cluster. Each storagenode 150 has a network port that provides access to the non-volatilesolid state storage(s) 152 of that storage node 150. Data can be storedin a segment, which is associated with a segment number and that segmentnumber is an indirection for a configuration of a RAID (redundant arrayof independent disks) stripe in some embodiments. The assignment and useof the authorities 168 thus establishes an indirection to data.Indirection may be referred to as the ability to reference dataindirectly, in this case via an authority 168, in accordance with someembodiments. A segment identifies a set of non-volatile solid statestorage 152 and a local identifier into the set of non-volatile solidstate storage 152 that may contain data. In some embodiments, the localidentifier is an offset into the device and may be reused sequentiallyby multiple segments. In other embodiments the local identifier isunique for a specific segment and never reused. The offsets in thenon-volatile solid state storage 152 are applied to locating data forwriting to or reading from the non-volatile solid state storage 152 (inthe form of a RAID stripe). Data is striped across multiple units ofnon-volatile solid state storage 152, which may include or be differentfrom the non-volatile solid state storage 152 having the authority 168for a particular data segment.

If there is a change in where a particular segment of data is located,e.g., during a data move or a data reconstruction, the authority 168 forthat data segment should be consulted, at that non-volatile solid statestorage 152 or storage node 150 having that authority 168. In order tolocate a particular piece of data, embodiments calculate a hash valuefor a data segment or apply an inode number or a data segment number.The output of this operation points to a non-volatile solid statestorage 152 having the authority 168 for that particular piece of data.In some embodiments there are two stages to this operation. The firststage maps an entity identifier (ID), e.g., a segment number, inodenumber, or directory number to an authority identifier. This mapping mayinclude a calculation such as a hash or a bit mask. The second stage ismapping the authority identifier to a particular non-volatile solidstate storage 152, which may be done through an explicit mapping. Theoperation is repeatable, so that when the calculation is performed, theresult of the calculation repeatably and reliably points to a particularnon-volatile solid state storage 152 having that authority 168. Theoperation may include the set of reachable storage nodes as input. Ifthe set of reachable non-volatile solid state storage units changes theoptimal set changes. In some embodiments, the persisted value is thecurrent assignment (which is always true) and the calculated value isthe target assignment the cluster will attempt to reconfigure towards.This calculation may be used to determine the optimal non-volatile solidstate storage 152 for an authority in the presence of a set ofnon-volatile solid state storage 152 that are reachable and constitutethe same cluster. The calculation also determines an ordered set of peernon-volatile solid state storage 152 that will also record the authorityto non-volatile solid state storage mapping so that the authority may bedetermined even if the assigned non-volatile solid state storage isunreachable. A duplicate or substitute authority 168 may be consulted ifa specific authority 168 is unavailable in some embodiments.

With reference to FIGS. 2A and 2B, two of the many tasks of the CPU 156on a storage node 150 are to break up write data, and reassemble readdata. When the system has determined that data is to be written, theauthority 168 for that data is located as above. When the segment ID fordata is already determined the request to write is forwarded to thenon-volatile solid state storage 152 currently determined to be the hostof the authority 168 determined from the segment. The host CPU 156 ofthe storage node 150, on which the non-volatile solid state storage 152and corresponding authority 168 reside, then breaks up or shards thedata and transmits the data out to various non-volatile solid statestorage 152. The transmitted data is written as a data stripe inaccordance with an erasure coding scheme. In some embodiments, data isrequested to be pulled, and in other embodiments, data is pushed. Inreverse, when data is read, the authority 168 for the segment IDcontaining the data is located as described above. The host CPU 156 ofthe storage node 150 on which the non-volatile solid state storage 152and corresponding authority 168 reside requests the data from thenon-volatile solid state storage and corresponding storage nodes pointedto by the authority. In some embodiments the data is read from flashstorage as a data stripe. The host CPU 156 of storage node 150 thenreassembles the read data, correcting any errors (if present) accordingto the appropriate erasure coding scheme, and forwards the reassembleddata to the network. In further embodiments, some or all of these taskscan be handled in the non-volatile solid state storage 152. In someembodiments, the segment host requests the data be sent to storage node150 by requesting pages from storage and then sending the data to thestorage node making the original request.

In some systems, for example in UNIX-style file systems, data is handledwith an index node or inode, which specifies a data structure thatrepresents an object in a file system. The object could be a file or adirectory, for example. Metadata may accompany the object, as attributessuch as permission data and a creation timestamp, among otherattributes. A segment number could be assigned to all or a portion ofsuch an object in a file system. In other systems, data segments arehandled with a segment number assigned elsewhere. For purposes ofdiscussion, the unit of distribution is an entity, and an entity can bea file, a directory, or a segment. That is, entities are units of dataor metadata stored by a storage system. Entities are grouped into setscalled authorities. Each authority has an authority owner, which is astorage node that has the exclusive right to update the entities in theauthority. In other words, a storage node contains the authority, andthat the authority, in turn, contains entities.

A segment is a logical container of data in accordance with someembodiments. A segment is an address space between medium address spaceand physical flash locations, i.e., the data segment number, are in thisaddress space. Segments may also contain meta-data, which enable dataredundancy to be restored (rewritten to different flash locations ordevices) without the involvement of higher level software. In oneembodiment, an internal format of a segment contains client data andmedium mappings to determine the position of that data. Each datasegment is protected, e.g., from memory and other failures, by breakingthe segment into a number of data and parity shards, where applicable.The data and parity shards are distributed, i.e., striped, acrossnon-volatile solid state storage 152 coupled to the host CPUs 156 (SeeFIGS. 2E and 2G) in accordance with an erasure coding scheme. Usage ofthe term segments refers to the container and its place in the addressspace of segments in some embodiments. Usage of the term stripe refersto the same set of shards as a segment and includes how the shards aredistributed along with redundancy or parity information in accordancewith some embodiments.

A series of address-space transformations takes place across an entirestorage system. At the top are the directory entries (file names) whichlink to an inode. Inodes point into medium address space, where data islogically stored. Medium addresses may be mapped through a series ofindirect mediums to spread the load of large files, or implement dataservices like deduplication or snapshots. Medium addresses may be mappedthrough a series of indirect mediums to spread the load of large files,or implement data services like deduplication or snapshots. Segmentaddresses are then translated into physical flash locations. Physicalflash locations have an address range bounded by the amount of flash inthe system in accordance with some embodiments. Medium addresses andsegment addresses are logical containers, and in some embodiments use a128 bit or larger identifier so as to be practically infinite, with alikelihood of reuse calculated as longer than the expected life of thesystem. Addresses from logical containers are allocated in ahierarchical fashion in some embodiments. Initially, each non-volatilesolid state storage unit 152 may be assigned a range of address space.Within this assigned range, the non-volatile solid state storage 152 isable to allocate addresses without synchronization with othernon-volatile solid state storage 152.

Data and metadata is stored by a set of underlying storage layouts thatare optimized for varying workload patterns and storage devices. Theselayouts incorporate multiple redundancy schemes, compression formats andindex algorithms. Some of these layouts store information aboutauthorities and authority masters, while others store file metadata andfile data. The redundancy schemes include error correction codes thattolerate corrupted bits within a single storage device (such as a NANDflash chip), erasure codes that tolerate the failure of multiple storagenodes, and replication schemes that tolerate data center or regionalfailures. In some embodiments, low density parity check (‘LDPC’) code isused within a single storage unit. Reed-Solomon encoding is used withina storage cluster, and mirroring is used within a storage grid in someembodiments. Metadata may be stored using an ordered log structuredindex (such as a Log Structured Merge Tree), and large data may not bestored in a log structured layout.

In order to maintain consistency across multiple copies of an entity,the storage nodes agree implicitly on two things through calculations:(1) the authority that contains the entity, and (2) the storage nodethat contains the authority. The assignment of entities to authoritiescan be done by pseudo randomly assigning entities to authorities, bysplitting entities into ranges based upon an externally produced key, orby placing a single entity into each authority. Examples of pseudorandomschemes are linear hashing and the Replication Under Scalable Hashing(‘RUSH’) family of hashes, including Controlled Replication UnderScalable Hashing (‘CRUSH’). In some embodiments, pseudo-randomassignment is utilized only for assigning authorities to nodes becausethe set of nodes can change. The set of authorities cannot change so anysubjective function may be applied in these embodiments. Some placementschemes automatically place authorities on storage nodes, while otherplacement schemes rely on an explicit mapping of authorities to storagenodes. In some embodiments, a pseudorandom scheme is utilized to mapfrom each authority to a set of candidate authority owners. Apseudorandom data distribution function related to CRUSH may assignauthorities to storage nodes and create a list of where the authoritiesare assigned. Each storage node has a copy of the pseudorandom datadistribution function, and can arrive at the same calculation fordistributing, and later finding or locating an authority. Each of thepseudorandom schemes requires the reachable set of storage nodes asinput in some embodiments in order to conclude the same target nodes.Once an entity has been placed in an authority, the entity may be storedon physical devices so that no expected failure will lead to unexpecteddata loss. In some embodiments, rebalancing algorithms attempt to storethe copies of all entities within an authority in the same layout and onthe same set of machines.

Examples of expected failures include device failures, stolen machines,datacenter fires, and regional disasters, such as nuclear or geologicalevents. Different failures lead to different levels of acceptable dataloss. In some embodiments, a stolen storage node impacts neither thesecurity nor the reliability of the system, while depending on systemconfiguration, a regional event could lead to no loss of data, a fewseconds or minutes of lost updates, or even complete data loss.

In the embodiments, the placement of data for storage redundancy isindependent of the placement of authorities for data consistency. Insome embodiments, storage nodes that contain authorities do not containany persistent storage. Instead, the storage nodes are connected tonon-volatile solid state storage units that do not contain authorities.The communications interconnect between storage nodes and non-volatilesolid state storage units consists of multiple communicationtechnologies and has non-uniform performance and fault tolerancecharacteristics. In some embodiments, as mentioned above, non-volatilesolid state storage units are connected to storage nodes via PCIexpress, storage nodes are connected together within a single chassisusing Ethernet backplane, and chassis are connected together to form astorage cluster. Storage clusters are connected to clients usingEthernet or fiber channel in some embodiments. If multiple storageclusters are configured into a storage grid, the multiple storageclusters are connected using the Internet or other long-distancenetworking links, such as a “metro scale” link or private link that doesnot traverse the internet.

Authority owners have the exclusive right to modify entities, to migrateentities from one non-volatile solid state storage unit to anothernon-volatile solid state storage unit, and to add and remove copies ofentities. This allows for maintaining the redundancy of the underlyingdata. When an authority owner fails, is going to be decommissioned, oris overloaded, the authority is transferred to a new storage node.Transient failures make it non-trivial to ensure that all non-faultymachines agree upon the new authority location. The ambiguity thatarises due to transient failures can be achieved automatically by aconsensus protocol such as Paxos, hot-warm failover schemes, via manualintervention by a remote system administrator, or by a local hardwareadministrator (such as by physically removing the failed machine fromthe cluster, or pressing a button on the failed machine). In someembodiments, a consensus protocol is used, and failover is automatic. Iftoo many failures or replication events occur in too short a timeperiod, the system goes into a self-preservation mode and haltsreplication and data movement activities until an administratorintervenes in accordance with some embodiments.

As authorities are transferred between storage nodes and authorityowners update entities in their authorities, the system transfersmessages between the storage nodes and non-volatile solid state storageunits. With regard to persistent messages, messages that have differentpurposes are of different types. Depending on the type of the message,the system maintains different ordering and durability guarantees. Asthe persistent messages are being processed, the messages aretemporarily stored in multiple durable and non-durable storage hardwaretechnologies. In some embodiments, messages are stored in RAM, NVRAM andon NAND flash devices, and a variety of protocols are used in order tomake efficient use of each storage medium. Latency-sensitive clientrequests may be persisted in replicated NVRAM, and then later NAND,while background rebalancing operations are persisted directly to NAND.

Persistent messages are persistently stored prior to being transmitted.This allows the system to continue to serve client requests despitefailures and component replacement. Although many hardware componentscontain unique identifiers that are visible to system administrators,manufacturer, hardware supply chain and ongoing monitoring qualitycontrol infrastructure, applications running on top of theinfrastructure address virtualize addresses. These virtualized addressesdo not change over the lifetime of the storage system, regardless ofcomponent failures and replacements. This allows each component of thestorage system to be replaced over time without reconfiguration ordisruptions of client request processing, i.e., the system supportsnon-disruptive upgrades.

In some embodiments, the virtualized addresses are stored withsufficient redundancy. A continuous monitoring system correlateshardware and software status and the hardware identifiers. This allowsdetection and prediction of failures due to faulty components andmanufacturing details. The monitoring system also enables the proactivetransfer of authorities and entities away from impacted devices beforefailure occurs by removing the component from the critical path in someembodiments.

FIG. 2C is a multiple level block diagram, showing contents of a storagenode 150 and contents of a non-volatile solid state storage 152 of thestorage node 150. Data is communicated to and from the storage node 150by a network interface controller (‘NIC’) 202 in some embodiments. Eachstorage node 150 has a CPU 156, and one or more non-volatile solid statestorage 152, as discussed above. Moving down one level in FIG. 2C, eachnon-volatile solid state storage 152 has a relatively fast non-volatilesolid state memory, such as nonvolatile random access memory (‘NVRAM’)204, and flash memory 206. In some embodiments, NVRAM 204 may be acomponent that does not require program/erase cycles (DRAM, MRAM, PCM),and can be a memory that can support being written vastly more oftenthan the memory is read from. Moving down another level in FIG. 2C, theNVRAM 204 is implemented in one embodiment as high speed volatilememory, such as dynamic random access memory (DRAM) 216, backed up byenergy reserve 218. Energy reserve 218 provides sufficient electricalpower to keep the DRAM 216 powered long enough for contents to betransferred to the flash memory 206 in the event of power failure. Insome embodiments, energy reserve 218 is a capacitor, super-capacitor,battery, or other device, that supplies a suitable supply of energysufficient to enable the transfer of the contents of DRAM 216 to astable storage medium in the case of power loss. The flash memory 206 isimplemented as multiple flash dies 222, which may be referred to aspackages of flash dies 222 or an array of flash dies 222. It should beappreciated that the flash dies 222 could be packaged in any number ofways, with a single die per package, multiple dies per package (i.e.multichip packages), in hybrid packages, as bare dies on a printedcircuit board or other substrate, as encapsulated dies, etc. In theembodiment shown, the non-volatile solid state storage 152 has acontroller 212 or other processor, and an input output (I/O) port 210coupled to the controller 212. I/O port 210 is coupled to the CPU 156and/or the network interface controller 202 of the flash storage node150. Flash input output (I/O) port 220 is coupled to the flash dies 222,and a direct memory access unit (DMA) 214 is coupled to the controller212, the DRAM 216 and the flash dies 222. In the embodiment shown, theI/O port 210, controller 212, DMA unit 214 and flash I/O port 220 areimplemented on a programmable logic device (‘PLD’) 208, e.g., an FPGA.In this embodiment, each flash die 222 has pages, organized as sixteenkB (kilobyte) pages 224, and a register 226 through which data can bewritten to or read from the flash die 222. In further embodiments, othertypes of solid-state memory are used in place of, or in addition toflash memory illustrated within flash die 222.

Storage clusters 161, in various embodiments as disclosed herein, can becontrasted with storage arrays in general. The storage nodes 150 arepart of a collection that creates the storage cluster 161. Each storagenode 150 owns a slice of data and computing required to provide thedata. Multiple storage nodes 150 cooperate to store and retrieve thedata. Storage memory or storage devices, as used in storage arrays ingeneral, are less involved with processing and manipulating the data.Storage memory or storage devices in a storage array receive commands toread, write, or erase data. The storage memory or storage devices in astorage array are not aware of a larger system in which they areembedded, or what the data means. Storage memory or storage devices instorage arrays can include various types of storage memory, such as RAM,solid state drives, hard disk drives, etc. The storage units 152described herein have multiple interfaces active simultaneously andserving multiple purposes. In some embodiments, some of thefunctionality of a storage node 150 is shifted into a storage unit 152,transforming the storage unit 152 into a combination of storage unit 152and storage node 150. Placing computing (relative to storage data) intothe storage unit 152 places this computing closer to the data itself.The various system embodiments have a hierarchy of storage node layerswith different capabilities. By contrast, in a storage array, acontroller owns and knows everything about all of the data that thecontroller manages in a shelf or storage devices. In a storage cluster161, as described herein, multiple controllers in multiple storage units152 and/or storage nodes 150 cooperate in various ways (e.g., forerasure coding, data sharding, metadata communication and redundancy,storage capacity expansion or contraction, data recovery, and so on).

FIG. 2D shows a storage server environment, which uses embodiments ofthe storage nodes 150 and storage units 152 of FIGS. 2A-C. In thisversion, each storage unit 152 has a processor such as controller 212(see FIG. 2C), an FPGA, flash memory 206, and NVRAM 204 (which issuper-capacitor backed DRAM 216, see FIGS. 2B and 2C) on a PCIe(peripheral component interconnect express) board in a chassis 138 (seeFIG. 2A). The storage unit 152 may be implemented as a single boardcontaining storage, and may be the largest tolerable failure domaininside the chassis. In some embodiments, up to two storage units 152 mayfail and the device will continue with no data loss.

The physical storage is divided into named regions based on applicationusage in some embodiments. The NVRAM 204 is a contiguous block ofreserved memory in the storage unit 152 DRAM 216, and is backed by NANDflash. NVRAM 204 is logically divided into multiple memory regionswritten for two as spool (e.g., spool_region). Space within the NVRAM204 spools is managed by each authority 168 independently. Each deviceprovides an amount of storage space to each authority 168. Thatauthority 168 further manages lifetimes and allocations within thatspace. Examples of a spool include distributed transactions or notions.When the primary power to a storage unit 152 fails, onboardsuper-capacitors provide a short duration of power hold up. During thisholdup interval, the contents of the NVRAM 204 are flushed to flashmemory 206. On the next power-on, the contents of the NVRAM 204 arerecovered from the flash memory 206.

As for the storage unit controller, the responsibility of the logical“controller” is distributed across each of the blades containingauthorities 168. This distribution of logical control is shown in FIG.2D as a host controller 242, mid-tier controller 244 and storage unitcontroller(s) 246. Management of the control plane and the storage planeare treated independently, although parts may be physically co-locatedon the same blade. Each authority 168 effectively serves as anindependent controller. Each authority 168 provides its own data andmetadata structures, its own background workers, and maintains its ownlifecycle.

FIG. 2E is a blade 252 hardware block diagram, showing a control plane254, compute and storage planes 256, 258, and authorities 168interacting with underlying physical resources, using embodiments of thestorage nodes 150 and storage units 152 of FIGS. 2A-C in the storageserver environment of FIG. 2D. The control plane 254 is partitioned intoa number of authorities 168 which can use the compute resources in thecompute plane 256 to run on any of the blades 252. The storage plane 258is partitioned into a set of devices, each of which provides access toflash 206 and NVRAM 204 resources. In one embodiment, the compute plane256 may perform the operations of a storage array controller, asdescribed herein, on one or more devices of the storage plane 258 (e.g.,a storage array).

In the compute and storage planes 256, 258 of FIG. 2E, the authorities168 interact with the underlying physical resources (i.e., devices).From the point of view of an authority 168, its resources are stripedover all of the physical devices. From the point of view of a device, itprovides resources to all authorities 168, irrespective of where theauthorities happen to run. Each authority 168 has allocated or has beenallocated one or more partitions 260 of storage memory in the storageunits 152, e.g. partitions 260 in flash memory 206 and NVRAM 204. Eachauthority 168 uses those allocated partitions 260 that belong to it, forwriting or reading user data. Authorities can be associated withdiffering amounts of physical storage of the system. For example, oneauthority 168 could have a larger number of partitions 260 or largersized partitions 260 in one or more storage units 152 than one or moreother authorities 168.

FIG. 2F depicts elasticity software layers in blades 252 of a storagecluster, in accordance with some embodiments. In the elasticitystructure, elasticity software is symmetric, i.e., each blade's computemodule 270 runs the three identical layers of processes depicted in FIG.2F. Storage managers 274 execute read and write requests from otherblades 252 for data and metadata stored in local storage unit 152 NVRAM204 and flash 206. Authorities 168 fulfill client requests by issuingthe necessary reads and writes to the blades 252 on whose storage units152 the corresponding data or metadata resides. Endpoints 272 parseclient connection requests received from switch fabric 146 supervisorysoftware, relay the client connection requests to the authorities 168responsible for fulfillment, and relay the authorities' 168 responses toclients. The symmetric three-layer structure enables the storagesystem's high degree of concurrency. Elasticity scales out efficientlyand reliably in these embodiments. In addition, elasticity implements aunique scale-out technique that balances work evenly across allresources regardless of client access pattern, and maximizes concurrencyby eliminating much of the need for inter-blade coordination thattypically occurs with conventional distributed locking.

Still referring to FIG. 2F, authorities 168 running in the computemodules 270 of a blade 252 perform the internal operations required tofulfill client requests. One feature of elasticity is that authorities168 are stateless, i.e., they cache active data and metadata in theirown blades' 252 DRAMs for fast access, but the authorities store everyupdate in their NVRAM 204 partitions on three separate blades 252 untilthe update has been written to flash 206. All the storage system writesto NVRAM 204 are in triplicate to partitions on three separate blades252 in some embodiments. With triple-mirrored NVRAM 204 and persistentstorage protected by parity and Reed-Solomon RAID checksums, the storagesystem can survive concurrent failure of two blades 252 with no loss ofdata, metadata, or access to either.

Because authorities 168 are stateless, they can migrate between blades252. Each authority 168 has a unique identifier. NVRAM 204 and flash 206partitions are associated with authorities' 168 identifiers, not withthe blades 252 on which they are running in some. Thus, when anauthority 168 migrates, the authority 168 continues to manage the samestorage partitions from its new location. When a new blade 252 isinstalled in an embodiment of the storage cluster, the systemautomatically rebalances load by: partitioning the new blade's 252storage for use by the system's authorities 168, migrating selectedauthorities 168 to the new blade 252, starting endpoints 272 on the newblade 252 and including them in the switch fabric's 146 clientconnection distribution algorithm.

From their new locations, migrated authorities 168 persist the contentsof their NVRAM 204 partitions on flash 206, process read and writerequests from other authorities 168, and fulfill the client requeststhat endpoints 272 direct to them. Similarly, if a blade 252 fails or isremoved, the system redistributes its authorities 168 among the system'sremaining blades 252. The redistributed authorities 168 continue toperform their original functions from their new locations.

FIG. 2G depicts authorities 168 and storage resources in blades 252 of astorage cluster, in accordance with some embodiments. Each authority 168is exclusively responsible for a partition of the flash 206 and NVRAM204 on each blade 252. The authority 168 manages the content andintegrity of its partitions independently of other authorities 168.Authorities 168 compress incoming data and preserve it temporarily intheir NVRAM 204 partitions, and then consolidate, RAID-protect, andpersist the data in segments of the storage in their flash 206partitions. As the authorities 168 write data to flash 206, storagemanagers 274 perform the necessary flash translation to optimize writeperformance and maximize media longevity. In the background, authorities168 “garbage collect,” or reclaim space occupied by data that clientshave made obsolete by overwriting the data. It should be appreciatedthat since authorities' 168 partitions are disjoint, there is no needfor distributed locking to execute client and writes or to performbackground functions.

The embodiments described herein may utilize various software,communication and/or networking protocols. In addition, theconfiguration of the hardware and/or software may be adjusted toaccommodate various protocols. For example, the embodiments may utilizeActive Directory, which is a database based system that providesauthentication, directory, policy, and other services in a WINDOW S™environment. In these embodiments, LDAP (Lightweight Directory AccessProtocol) is one example application protocol for querying and modifyingitems in directory service providers such as Active Directory. In someembodiments, a network lock manager (‘NLM’) is utilized as a facilitythat works in cooperation with the Network File System (‘NFS’) toprovide a System V style of advisory file and record locking over anetwork. The Server Message Block (‘SMB’) protocol, one version of whichis also known as Common Internet File System (‘CIFS’), may be integratedwith the storage systems discussed herein. SMP operates as anapplication-layer network protocol typically used for providing sharedaccess to files, printers, and serial ports and miscellaneouscommunications between nodes on a network. SMB also provides anauthenticated inter-process communication mechanism. AMAZON™ S3 (SimpleStorage Service) is a web service offered by Amazon Web Services, andthe systems described herein may interface with Amazon S3 through webservices interfaces (REST (representational state transfer), SOAP(simple object access protocol), and BitTorrent). A RESTful API(application programming interface) breaks down a transaction to createa series of small modules. Each module addresses a particular underlyingpart of the transaction. The control or permissions provided with theseembodiments, especially for object data, may include utilization of anaccess control list (‘ACL’). The ACL is a list of permissions attachedto an object and the ACL specifies which users or system processes aregranted access to objects, as well as what operations are allowed ongiven objects. The systems may utilize Internet Protocol version 6(‘IPv6’), as well as IPv4, for the communications protocol that providesan identification and location system for computers on networks androutes traffic across the Internet. The routing of packets betweennetworked systems may include Equal-cost multi-path routing (‘ECMP’),which is a routing strategy where next-hop packet forwarding to a singledestination can occur over multiple “best paths” which tie for top placein routing metric calculations. Multi-path routing can be used inconjunction with most routing protocols because it is a per-hop decisionlimited to a single router. The software may support Multi-tenancy,which is an architecture in which a single instance of a softwareapplication serves multiple customers. Each customer may be referred toas a tenant. Tenants may be given the ability to customize some parts ofthe application, but may not customize the application's code, in someembodiments. The embodiments may maintain audit logs. An audit log is adocument that records an event in a computing system. In addition todocumenting what resources were accessed, audit log entries typicallyinclude destination and source addresses, a timestamp, and user logininformation for compliance with various regulations. The embodiments maysupport various key management policies, such as encryption keyrotation. In addition, the system may support dynamic root passwords orsome variation dynamically changing passwords.

FIG. 3A sets forth a diagram of a storage system 306 that is coupled fordata communications with a cloud services provider 302 in accordancewith some embodiments of the present disclosure. Although depicted inless detail, the storage system 306 depicted in FIG. 3A may be similarto the storage systems described above with reference to FIGS. 1A-1D andFIGS. 2A-2G. In some embodiments, the storage system 306 depicted inFIG. 3A may be embodied as a storage system that includes imbalancedactive/active controllers, as a storage system that includes balancedactive/active controllers, as a storage system that includesactive/active controllers where less than all of each controller'sresources are utilized such that each controller has reserve resourcesthat may be used to support failover, as a storage system that includesfully active/active controllers, as a storage system that includesdataset-segregated controllers, as a storage system that includesdual-layer architectures with front-end controllers and back-endintegrated storage controllers, as a storage system that includesscale-out clusters of dual-controller arrays, as well as combinations ofsuch embodiments.

In the example depicted in FIG. 3A, the storage system 306 is coupled tothe cloud services provider 302 via a data communications link 304. Thedata communications link 304 may be embodied as a dedicated datacommunications link, as a data communications pathway that is providedthrough the use of one or data communications networks such as a widearea network (‘WAN’) or LAN, or as some other mechanism capable oftransporting digital information between the storage system 306 and thecloud services provider 302. Such a data communications link 304 may befully wired, fully wireless, or some aggregation of wired and wirelessdata communications pathways. In such an example, digital informationmay be exchanged between the storage system 306 and the cloud servicesprovider 302 via the data communications link 304 using one or more datacommunications protocols. For example, digital information may beexchanged between the storage system 306 and the cloud services provider302 via the data communications link 304 using the handheld devicetransfer protocol (‘HDTP’), hypertext transfer protocol (‘HTTP’),internet protocol (‘IP’), real-time transfer protocol (‘RTP’),transmission control protocol (‘TCP’), user datagram protocol (‘UDP’),wireless application protocol (‘WAP’), or other protocol.

The cloud services provider 302 depicted in FIG. 3A may be embodied, forexample, as a system and computing environment that provides a vastarray of services to users of the cloud services provider 302 throughthe sharing of computing resources via the data communications link 304.The cloud services provider 302 may provide on-demand access to a sharedpool of configurable computing resources such as computer networks,servers, storage, applications, and services, and so on. The shared poolof configurable resources may be rapidly provisioned and released to auser of the cloud services provider 302 with minimal management effort.Generally, the user of the cloud services provider 302 is unaware of theexact computing resources utilized by the cloud services provider 302 toprovide the services. Although in many cases such a cloud servicesprovider 302 may be accessible via the Internet, readers of skill in theart will recognize that any system that abstracts the use of sharedresources to provide services to a user through any data communicationslink may be considered a cloud services provider 302.

In the example depicted in FIG. 3A, the cloud services provider 302 maybe configured to provide a variety of services to the storage system 306and users of the storage system 306 through the implementation ofvarious service models. For example, the cloud services provider 302 maybe configured to provide services through the implementation of aninfrastructure as a service (‘IaaS’) service model, through theimplementation of a platform as a service (‘PaaS’) service model,through the implementation of a software as a service (‘SaaS’) servicemodel, through the implementation of an authentication as a service(‘AaaS’) service model, through the implementation of a storage as aservice model where the cloud services provider 302 offers access to itsstorage infrastructure for use by the storage system 306 and users ofthe storage system 306, and so on. Readers will appreciate that thecloud services provider 302 may be configured to provide additionalservices to the storage system 306 and users of the storage system 306through the implementation of additional service models, as the servicemodels described above are included only for explanatory purposes and inno way represent a limitation of the services that may be offered by thecloud services provider 302 or a limitation as to the service modelsthat may be implemented by the cloud services provider 302.

In the example depicted in FIG. 3A, the cloud services provider 302 maybe embodied, for example, as a private cloud, as a public cloud, or as acombination of a private cloud and public cloud. In an embodiment inwhich the cloud services provider 302 is embodied as a private cloud,the cloud services provider 302 may be dedicated to providing servicesto a single organization rather than providing services to multipleorganizations. In an embodiment where the cloud services provider 302 isembodied as a public cloud, the cloud services provider 302 may provideservices to multiple organizations. In still alternative embodiments,the cloud services provider 302 may be embodied as a mix of a privateand public cloud services with a hybrid cloud deployment.

Although not explicitly depicted in FIG. 3A, readers will appreciatethat a vast amount of additional hardware components and additionalsoftware components may be necessary to facilitate the delivery of cloudservices to the storage system 306 and users of the storage system 306.For example, the storage system 306 may be coupled to (or even include)a cloud storage gateway. Such a cloud storage gateway may be embodied,for example, as hardware-based or software-based appliance that islocated on premise with the storage system 306. Such a cloud storagegateway may operate as a bridge between local applications that areexecuting on the storage array 306 and remote, cloud-based storage thatis utilized by the storage array 306. Through the use of a cloud storagegateway, organizations may move primary iSCSI or NAS to the cloudservices provider 302, thereby enabling the organization to save spaceon their on-premises storage systems. Such a cloud storage gateway maybe configured to emulate a disk array, a block-based device, a fileserver, or other storage system that can translate the SCSI commands,file server commands, or other appropriate command into REST-spaceprotocols that facilitate communications with the cloud servicesprovider 302.

In order to enable the storage system 306 and users of the storagesystem 306 to make use of the services provided by the cloud servicesprovider 302, a cloud migration process may take place during whichdata, applications, or other elements from an organization's localsystems (or even from another cloud environment) are moved to the cloudservices provider 302. In order to successfully migrate data,applications, or other elements to the cloud services provider's 302environment, middleware such as a cloud migration tool may be utilizedto bridge gaps between the cloud services provider's 302 environment andan organization's environment. Such cloud migration tools may also beconfigured to address potentially high network costs and long transfertimes associated with migrating large volumes of data to the cloudservices provider 302, as well as addressing security concernsassociated with sensitive data to the cloud services provider 302 overdata communications networks. In order to further enable the storagesystem 306 and users of the storage system 306 to make use of theservices provided by the cloud services provider 302, a cloudorchestrator may also be used to arrange and coordinate automated tasksin pursuit of creating a consolidated process or workflow. Such a cloudorchestrator may perform tasks such as configuring various components,whether those components are cloud components or on-premises components,as well as managing the interconnections between such components. Thecloud orchestrator can simplify the inter-component communication andconnections to ensure that links are correctly configured andmaintained.

In the example depicted in FIG. 3A, and as described briefly above, thecloud services provider 302 may be configured to provide services to thestorage system 306 and users of the storage system 306 through the usageof a SaaS service model, eliminating the need to install and run theapplication on local computers, which may simplify maintenance andsupport of the application. Such applications may take many forms inaccordance with various embodiments of the present disclosure. Forexample, the cloud services provider 302 may be configured to provideaccess to data analytics applications to the storage system 306 andusers of the storage system 306. Such data analytics applications may beconfigured, for example, to receive vast amounts of telemetry dataphoned home by the storage system 306. Such telemetry data may describevarious operating characteristics of the storage system 306 and may beanalyzed for a vast array of purposes including, for example, todetermine the health of the storage system 306, to identify workloadsthat are executing on the storage system 306, to predict when thestorage system 306 will run out of various resources, to recommendconfiguration changes, hardware or software upgrades, workflowmigrations, or other actions that may improve the operation of thestorage system 306.

The cloud services provider 302 may also be configured to provide accessto virtualized computing environments to the storage system 306 andusers of the storage system 306. Such virtualized computing environmentsmay be embodied, for example, as a virtual machine or other virtualizedcomputer hardware platforms, virtual storage devices, virtualizedcomputer network resources, and so on. Examples of such virtualizedenvironments can include virtual machines that are created to emulate anactual computer, virtualized desktop environments that separate alogical desktop from a physical machine, virtualized file systems thatallow uniform access to different types of concrete file systems, andmany others.

For further explanation, FIG. 3B sets forth a diagram of a storagesystem 306 in accordance with some embodiments of the presentdisclosure. Although depicted in less detail, the storage system 306depicted in FIG. 3B may be similar to the storage systems describedabove with reference to FIGS. 1A-1D and FIGS. 2A-2G as the storagesystem may include many of the components described above.

The storage system 306 depicted in FIG. 3B may include a vast amount ofstorage resources 308, which may be embodied in many forms. For example,the storage resources 308 can include nano-RAM or another form ofnonvolatile random access memory that utilizes carbon nanotubesdeposited on a substrate, 3D crosspoint non-volatile memory, flashmemory including single-level cell (‘SLC’) NAND flash, multi-level cell(‘MLC’) NAND flash, triple-level cell (‘TLC’) NAND flash, quad-levelcell (‘QLC’) NAND flash, or others. Likewise, the storage resources 308may include non-volatile magnetoresistive random-access memory (‘MRAM’),including spin transfer torque (‘STT’) MRAM. The example storageresources 308 may alternatively include non-volatile phase-change memory(‘PCM’), quantum memory that allows for the storage and retrieval ofphotonic quantum information, resistive random-access memory (‘ReRAM’),storage class memory (‘SCM’), or other form of storage resources,including any combination of resources described herein. Readers willappreciate that other forms of computer memories and storage devices maybe utilized by the storage systems described above, including DRAM,SRAM, EEPROM, universal memory, and many others. The storage resources308 depicted in FIG. 3A may be embodied in a variety of form factors,including but not limited to, dual in-line memory modules (‘DIMMs’),non-volatile dual in-line memory modules (‘NVDIMMs’), M.2, U.2, andothers.

The storage resources 308 depicted in FIG. 3A may include various formsof SCM. SCM may effectively treat fast, non-volatile memory (e.g., NANDflash) as an extension of DRAM such that an entire dataset may betreated as an in-memory dataset that resides entirely in DRAM. SCM mayinclude non-volatile media such as, for example, NAND flash. Such NANDflash may be accessed utilizing NVMe that can use the PCIe bus as itstransport, providing for relatively low access latencies compared toolder protocols. In fact, the network protocols used for SSDs inall-flash arrays can include NVMe using Ethernet (ROCE, NVME TCP), FibreChannel (NVMe FC), InfiniBand (iWARP), and others that make it possibleto treat fast, non-volatile memory as an extension of DRAM. In view ofthe fact that DRAM is often byte-addressable and fast, non-volatilememory such as NAND flash is block-addressable, a controllersoftware/hardware stack may be needed to convert the block data to thebytes that are stored in the media. Examples of media and software thatmay be used as SCM can include, for example, 3D XPoint, Intel MemoryDrive Technology, Samsung's Z-SSD, and others.

The example storage system 306 depicted in FIG. 3B may implement avariety of storage architectures. For example, storage systems inaccordance with some embodiments of the present disclosure may utilizeblock storage where data is stored in blocks, and each block essentiallyacts as an individual hard drive. Storage systems in accordance withsome embodiments of the present disclosure may utilize object storage,where data is managed as objects. Each object may include the dataitself, a variable amount of metadata, and a globally unique identifier,where object storage can be implemented at multiple levels (e.g., devicelevel, system level, interface level). Storage systems in accordancewith some embodiments of the present disclosure utilize file storage inwhich data is stored in a hierarchical structure. Such data may be savedin files and folders, and presented to both the system storing it andthe system retrieving it in the same format.

The example storage system 306 depicted in FIG. 3B may be embodied as astorage system in which additional storage resources can be addedthrough the use of a scale-up model, additional storage resources can beadded through the use of a scale-out model, or through some combinationthereof. In a scale-up model, additional storage may be added by addingadditional storage devices. In a scale-out model, however, additionalstorage nodes may be added to a cluster of storage nodes, where suchstorage nodes can include additional processing resources, additionalnetworking resources, and so on.

The storage system 306 depicted in FIG. 3B also includes communicationsresources 310 that may be useful in facilitating data communicationsbetween components within the storage system 306, as well as datacommunications between the storage system 306 and computing devices thatare outside of the storage system 306, including embodiments where thoseresources are separated by a relatively vast expanse. The communicationsresources 310 may be configured to utilize a variety of differentprotocols and data communication fabrics to facilitate datacommunications between components within the storage systems as well ascomputing devices that are outside of the storage system. For example,the communications resources 310 can include fibre channel (‘FC’)technologies such as FC fabrics and FC protocols that can transport SCSIcommands over FC network, FC over ethernet (‘FCoE’) technologies throughwhich FC frames are encapsulated and transmitted over Ethernet networks,InfiniBand (‘IB’) technologies in which a switched fabric topology isutilized to facilitate transmissions between channel adapters, NVMExpress (‘NVMe’) technologies and NVMe over fabrics (‘NVMeoF’)technologies through which non-volatile storage media attached via a PCIexpress (‘PCIe’) bus may be accessed, and others. In fact, the storagesystems described above may, directly or indirectly, make use ofneutrino communication technologies and devices through whichinformation (including binary information) is transmitted using a beamof neutrinos.

The communications resources 310 can also include mechanisms foraccessing storage resources 308 within the storage system 306 utilizingserial attached SCSI (‘SAS’), serial ATA (‘SATA’) bus interfaces forconnecting storage resources 308 within the storage system 306 to hostbus adapters within the storage system 306, internet small computersystems interface (‘iSCSI’) technologies to provide block-level accessto storage resources 308 within the storage system 306, and othercommunications resources that that may be useful in facilitating datacommunications between components within the storage system 306, as wellas data communications between the storage system 306 and computingdevices that are outside of the storage system 306.

The storage system 306 depicted in FIG. 3B also includes processingresources 312 that may be useful in useful in executing computer programinstructions and performing other computational tasks within the storagesystem 306. The processing resources 312 may include one or more ASICsthat are customized for some particular purpose as well as one or moreCPUs. The processing resources 312 may also include one or more DSPs,one or more FPGAs, one or more systems on a chip (‘SoCs’), or other formof processing resources 312. The storage system 306 may utilize thestorage resources 312 to perform a variety of tasks including, but notlimited to, supporting the execution of software resources 314 that willbe described in greater detail below.

The storage system 306 depicted in FIG. 3B also includes softwareresources 314 that, when executed by processing resources 312 within thestorage system 306, may perform a vast array of tasks. The softwareresources 314 may include, for example, one or more modules of computerprogram instructions that when executed by processing resources 312within the storage system 306 are useful in carrying out various dataprotection techniques to preserve the integrity of data that is storedwithin the storage systems. Readers will appreciate that such dataprotection techniques may be carried out, for example, by systemsoftware executing on computer hardware within the storage system, by acloud services provider, or in other ways. Such data protectiontechniques can include, for example, data archiving techniques thatcause data that is no longer actively used to be moved to a separatestorage device or separate storage system for long-term retention, databackup techniques through which data stored in the storage system may becopied and stored in a distinct location to avoid data loss in the eventof equipment failure or some other form of catastrophe with the storagesystem, data replication techniques through which data stored in thestorage system is replicated to another storage system such that thedata may be accessible via multiple storage systems, data snapshottingtechniques through which the state of data within the storage system iscaptured at various points in time, data and database cloning techniquesthrough which duplicate copies of data and databases may be created, andother data protection techniques.

The software resources 314 may also include software that is useful inimplementing software-defined storage (‘SDS’). In such an example, thesoftware resources 314 may include one or more modules of computerprogram instructions that, when executed, are useful in policy-basedprovisioning and management of data storage that is independent of theunderlying hardware. Such software resources 314 may be useful inimplementing storage virtualization to separate the storage hardwarefrom the software that manages the storage hardware.

The software resources 314 may also include software that is useful infacilitating and optimizing I/O operations that are directed to thestorage resources 308 in the storage system 306. For example, thesoftware resources 314 may include software modules that perform carryout various data reduction techniques such as, for example, datacompression, data deduplication, and others. The software resources 314may include software modules that intelligently group together I/Ooperations to facilitate better usage of the underlying storage resource308, software modules that perform data migration operations to migratefrom within a storage system, as well as software modules that performother functions. Such software resources 314 may be embodied as one ormore software containers or in many other ways.

For further explanation, FIG. 3C sets forth an example of a cloud-basedstorage system 318 in accordance with some embodiments of the presentdisclosure. In the example depicted in FIG. 3C, the cloud-based storagesystem 318 is created entirely in a cloud computing environment 316 suchas, for example, Amazon Web Services (‘AWS’), Microsoft Azure, GoogleCloud Platform, IBM Cloud, Oracle Cloud, and others. The cloud-basedstorage system 318 may be used to provide services similar to theservices that may be provided by the storage systems described above.For example, the cloud-based storage system 318 may be used to provideblock storage services to users of the cloud-based storage system 318,the cloud-based storage system 318 may be used to provide storageservices to users of the cloud-based storage system 318 through the useof solid-state storage, and so on.

The cloud-based storage system 318 depicted in FIG. 3C includes twocloud computing instances 320, 322 that each are used to support theexecution of a storage controller application 324, 326. The cloudcomputing instances 320, 322 may be embodied, for example, as instancesof cloud computing resources (e.g., virtual machines) that may beprovided by the cloud computing environment 316 to support the executionof software applications such as the storage controller application 324,326. In one embodiment, the cloud computing instances 320, 322 may beembodied as Amazon Elastic Compute Cloud (‘EC2’) instances. In such anexample, an Amazon Machine Image (‘AMI’) that includes the storagecontroller application 324, 326 may be booted to create and configure avirtual machine that may execute the storage controller application 324,326.

In the example method depicted in FIG. 3C, the storage controllerapplication 324, 326 may be embodied as a module of computer programinstructions that, when executed, carries out various storage tasks. Forexample, the storage controller application 324, 326 may be embodied asa module of computer program instructions that, when executed, carriesout the same tasks as the controllers 110A, 110B in FIG. 1A describedabove such as writing data received from the users of the cloud-basedstorage system 318 to the cloud-based storage system 318, erasing datafrom the cloud-based storage system 318, retrieving data from thecloud-based storage system 318 and providing such data to users of thecloud-based storage system 318, monitoring and reporting of diskutilization and performance, performing redundancy operations, such asRAID or RAID-like data redundancy operations, compressing data,encrypting data, deduplicating data, and so forth. Readers willappreciate that because there are two cloud computing instances 320, 322that each include the storage controller application 324, 326, in someembodiments one cloud computing instance 320 may operate as the primarycontroller as described above while the other cloud computing instance322 may operate as the secondary controller as described above. Readerswill appreciate that the storage controller application 324, 326depicted in FIG. 3C may include identical source code that is executedwithin different cloud computing instances 320, 322.

Consider an example in which the cloud computing environment 316 isembodied as AWS and the cloud computing instances are embodied as EC2instances. In such an example, the cloud computing instance 320 thatoperates as the primary controller may be deployed on one of theinstance types that has a relatively large amount of memory andprocessing power while the cloud computing instance 322 that operates asthe secondary controller may be deployed on one of the instance typesthat has a relatively small amount of memory and processing power. Insuch an example, upon the occurrence of a failover event where the rolesof primary and secondary are switched, a double failover may actually becarried out such that: 1) a first failover event where the cloudcomputing instance 322 that formerly operated as the secondarycontroller begins to operate as the primary controller, and 2) a thirdcloud computing instance (not shown) that is of an instance type thathas a relatively large amount of memory and processing power is spun upwith a copy of the storage controller application, where the third cloudcomputing instance begins operating as the primary controller while thecloud computing instance 322 that originally operated as the secondarycontroller begins operating as the secondary controller again. In suchan example, the cloud computing instance 320 that formerly operated asthe primary controller may be terminated. Readers will appreciate thatin alternative embodiments, the cloud computing instance 320 that isoperating as the secondary controller after the failover event maycontinue to operate as the secondary controller and the cloud computinginstance 322 that operated as the primary controller after theoccurrence of the failover event may be terminated once the primary rolehas been assumed by the third cloud computing instance (not shown).

Readers will appreciate that while the embodiments described aboverelate to embodiments where one cloud computing instance 320 operates asthe primary controller and the second cloud computing instance 322operates as the secondary controller, other embodiments are within thescope of the present disclosure. For example, each cloud computinginstance 320, 322 may operate as a primary controller for some portionof the address space supported by the cloud-based storage system 318,each cloud computing instance 320, 322 may operate as a primarycontroller where the servicing of I/O operations directed to thecloud-based storage system 318 are divided in some other way, and so on.In fact, in other embodiments where costs savings may be prioritizedover performance demands, only a single cloud computing instance mayexist that contains the storage controller application.

The cloud-based storage system 318 depicted in FIG. 3C includes cloudcomputing instances 340 a, 340 b, 340 n with local storage 330, 334,338. The cloud computing instances 340 a, 340 b, 340 n depicted in FIG.3C may be embodied, for example, as instances of cloud computingresources that may be provided by the cloud computing environment 316 tosupport the execution of software applications. The cloud computinginstances 340 a, 340 b, 340 n of FIG. 3C may differ from the cloudcomputing instances 320, 322 described above as the cloud computinginstances 340 a, 340 b, 340 n of FIG. 3C have local storage 330, 334,338 resources whereas the cloud computing instances 320, 322 thatsupport the execution of the storage controller application 324, 326need not have local storage resources. The cloud computing instances 340a, 340 b, 340 n with local storage 330, 334, 338 may be embodied, forexample, as EC2 M5 instances that include one or more SSDs, as EC2 R5instances that include one or more SSDs, as EC2 I3 instances thatinclude one or more SSDs, and so on. In some embodiments, the localstorage 330, 334, 338 must be embodied as solid-state storage (e.g.,SSDs) rather than storage that makes use of hard disk drives.

In the example depicted in FIG. 3C, each of the cloud computinginstances 340 a, 340 b, 340 n with local storage 330, 334, 338 caninclude a software daemon 328, 332, 336 that, when executed by a cloudcomputing instance 340 a, 340 b, 340 n can present itself to the storagecontroller applications 324, 326 as if the cloud computing instance 340a, 340 b, 340 n were a physical storage device (e.g., one or more SSDs).In such an example, the software daemon 328, 332, 336 may includecomputer program instructions similar to those that would normally becontained on a storage device such that the storage controllerapplications 324, 326 can send and receive the same commands that astorage controller would send to storage devices. In such a way, thestorage controller applications 324, 326 may include code that isidentical to (or substantially identical to) the code that would beexecuted by the controllers in the storage systems described above. Inthese and similar embodiments, communications between the storagecontroller applications 324, 326 and the cloud computing instances 340a, 340 b, 340 n with local storage 330, 334, 338 may utilize iSCSI, NVMeover TCP, messaging, a custom protocol, or in some other mechanism.

In the example depicted in FIG. 3C, each of the cloud computinginstances 340 a, 340 b, 340 n with local storage 330, 334, 338 may alsobe coupled to block-storage 342, 344, 346 that is offered by the cloudcomputing environment 316. The block-storage 342, 344, 346 that isoffered by the cloud computing environment 316 may be embodied, forexample, as Amazon Elastic Block Store (‘EBS’) volumes. For example, afirst EBS volume may be coupled to a first cloud computing instance 340a, a second EBS volume may be coupled to a second cloud computinginstance 340 b, and a third EBS volume may be coupled to a third cloudcomputing instance 340 n. In such an example, the block-storage 342,344, 346 that is offered by the cloud computing environment 316 may beutilized in a manner that is similar to how the NVRAM devices describedabove are utilized, as the software daemon 328, 332, 336 (or some othermodule) that is executing within a particular cloud comping instance 340a, 340 b, 340 n may, upon receiving a request to write data, initiate awrite of the data to its attached EBS volume as well as a write of thedata to its local storage 330, 334, 338 resources. In some alternativeembodiments, data may only be written to the local storage 330, 334, 338resources within a particular cloud comping instance 340 a, 340 b, 340n. In an alternative embodiment, rather than using the block-storage342, 344, 346 that is offered by the cloud computing environment 316 asNVRAM, actual RAM on each of the cloud computing instances 340 a, 340 b,340 n with local storage 330, 334, 338 may be used as NVRAM, therebydecreasing network utilization costs that would be associated with usingan EBS volume as the NVRAM.

In the example depicted in FIG. 3C, the cloud computing instances 340 a,340 b, 340 n with local storage 330, 334, 338 may be utilized, by cloudcomputing instances 320, 322 that support the execution of the storagecontroller application 324, 326 to service I/O operations that aredirected to the cloud-based storage system 318. Consider an example inwhich a first cloud computing instance 320 that is executing the storagecontroller application 324 is operating as the primary controller. Insuch an example, the first cloud computing instance 320 that isexecuting the storage controller application 324 may receive (directlyor indirectly via the secondary controller) requests to write data tothe cloud-based storage system 318 from users of the cloud-based storagesystem 318. In such an example, the first cloud computing instance 320that is executing the storage controller application 324 may performvarious tasks such as, for example, deduplicating the data contained inthe request, compressing the data contained in the request, determiningwhere to the write the data contained in the request, and so on, beforeultimately sending a request to write a deduplicated, encrypted, orotherwise possibly updated version of the data to one or more of thecloud computing instances 340 a, 340 b, 340 n with local storage 330,334, 338. Either cloud computing instance 320, 322, in some embodiments,may receive a request to read data from the cloud-based storage system318 and may ultimately send a request to read data to one or more of thecloud computing instances 340 a, 340 b, 340 n with local storage 330,334, 338.

Readers will appreciate that when a request to write data is received bya particular cloud computing instance 340 a, 340 b, 340 n with localstorage 330, 334, 338, the software daemon 328, 332, 336 or some othermodule of computer program instructions that is executing on theparticular cloud computing instance 340 a, 340 b, 340 n may beconfigured to not only write the data to its own local storage 330, 334,338 resources and any appropriate block-storage 342, 344, 346 that areoffered by the cloud computing environment 316, but the software daemon328, 332, 336 or some other module of computer program instructions thatis executing on the particular cloud computing instance 340 a, 340 b,340 n may also be configured to write the data to cloud-based objectstorage 348 that is attached to the particular cloud computing instance340 a, 340 b, 340 n. The cloud-based object storage 348 that is attachedto the particular cloud computing instance 340 a, 340 b, 340 n may beembodied, for example, as Amazon Simple Storage Service (‘S3’) storagethat is accessible by the particular cloud computing instance 340 a, 340b, 340 n. In other embodiments, the cloud computing instances 320, 322that each include the storage controller application 324, 326 mayinitiate the storage of the data in the local storage 330, 334, 338 ofthe cloud computing instances 340 a, 340 b, 340 n and the cloud-basedobject storage 348.

Readers will appreciate that, as described above, the cloud-basedstorage system 318 may be used to provide block storage services tousers of the cloud-based storage system 318. While the local storage330, 334, 338 resources and the block-storage 342, 344, 346 resourcesthat are utilized by the cloud computing instances 340 a, 340 b, 340 nmay support block-level access, the cloud-based object storage 348 thatis attached to the particular cloud computing instance 340 a, 340 b, 340n supports only object-based access. In order to address this, thesoftware daemon 328, 332, 336 or some other module of computer programinstructions that is executing on the particular cloud computinginstance 340 a, 340 b, 340 n may be configured to take blocks of data,package those blocks into objects, and write the objects to thecloud-based object storage 348 that is attached to the particular cloudcomputing instance 340 a, 340 b, 340 n.

Consider an example in which data is written to the local storage 330,334, 338 resources and the block-storage 342, 344, 346 resources thatare utilized by the cloud computing instances 340 a, 340 b, 340 n in 1MB blocks. In such an example, assume that a user of the cloud-basedstorage system 318 issues a request to write data that, after beingcompressed and deduplicated by the storage controller application 324,326 results in the need to write 5 MB of data. In such an example,writing the data to the local storage 330, 334, 338 resources and theblock-storage 342, 344, 346 resources that are utilized by the cloudcomputing instances 340 a, 340 b, 340 n is relatively straightforward as5 blocks that are 1 MB in size are written to the local storage 330,334, 338 resources and the block-storage 342, 344, 346 resources thatare utilized by the cloud computing instances 340 a, 340 b, 340 n. Insuch an example, the software daemon 328, 332, 336 or some other moduleof computer program instructions that is executing on the particularcloud computing instance 340 a, 340 b, 340 n may be configured to: 1)create a first object that includes the first 1 MB of data and write thefirst object to the cloud-based object storage 348, 2) create a secondobject that includes the second 1 MB of data and write the second objectto the cloud-based object storage 348, 3) create a third object thatincludes the third 1 MB of data and write the third object to thecloud-based object storage 348, and so on. As such, in some embodiments,each object that is written to the cloud-based object storage 348 may beidentical (or nearly identical) in size. Readers will appreciate that insuch an example, metadata that is associated with the data itself may beincluded in each object (e.g., the first 1 MB of the object is data andthe remaining portion is metadata associated with the data).

Readers will appreciate that the cloud-based object storage 348 may beincorporated into the cloud-based storage system 318 to increase thedurability of the cloud-based storage system 318. Continuing with theexample described above where the cloud computing instances 340 a, 340b, 340 n are EC2 instances, readers will understand that EC2 instancesare only guaranteed to have a monthly uptime of 99.9% and data stored inthe local instance store only persists during the lifetime of the EC2instance. As such, relying on the cloud computing instances 340 a, 340b, 340 n with local storage 330, 334, 338 as the only source ofpersistent data storage in the cloud-based storage system 318 may resultin a relatively unreliable storage system. Likewise, EBS volumes aredesigned for 99.999% availability. As such, even relying on EBS as thepersistent data store in the cloud-based storage system 318 may resultin a storage system that is not sufficiently durable. Amazon S3,however, is designed to provide 99.999999999% durability, meaning that acloud-based storage system 318 that can incorporate S3 into its pool ofstorage is substantially more durable than various other options.

Readers will appreciate that while a cloud-based storage system 318 thatcan incorporate S3 into its pool of storage is substantially moredurable than various other options, utilizing S3 as the primary pool ofstorage may result in storage system that has relatively slow responsetimes and relatively long I/O latencies. As such, the cloud-basedstorage system 318 depicted in FIG. 3C not only stores data in S3 butthe cloud-based storage system 318 also stores data in local storage330, 334, 338 resources and block-storage 342, 344, 346 resources thatare utilized by the cloud computing instances 340 a, 340 b, 340 n, suchthat read operations can be serviced from local storage 330, 334, 338resources and the block-storage 342, 344, 346 resources that areutilized by the cloud computing instances 340 a, 340 b, 340 n, therebyreducing read latency when users of the cloud-based storage system 318attempt to read data from the cloud-based storage system 318.

In some embodiments, all data that is stored by the cloud-based storagesystem 318 may be stored in both: 1) the cloud-based object storage 348,and 2) at least one of the local storage 330, 334, 338 resources orblock-storage 342, 344, 346 resources that are utilized by the cloudcomputing instances 340 a, 340 b, 340 n. In such embodiments, the localstorage 330, 334, 338 resources and block-storage 342, 344, 346resources that are utilized by the cloud computing instances 340 a, 340b, 340 n may effectively operate as cache that generally includes alldata that is also stored in S3, such that all reads of data may beserviced by the cloud computing instances 340 a, 340 b, 340 n withoutrequiring the cloud computing instances 340 a, 340 b, 340 n to accessthe cloud-based object storage 348. Readers will appreciate that inother embodiments, however, all data that is stored by the cloud-basedstorage system 318 may be stored in the cloud-based object storage 348,but less than all data that is stored by the cloud-based storage system318 may be stored in at least one of the local storage 330, 334, 338resources or block-storage 342, 344, 346 resources that are utilized bythe cloud computing instances 340 a, 340 b, 340 n. In such an example,various policies may be utilized to determine which subset of the datathat is stored by the cloud-based storage system 318 should reside inboth: 1) the cloud-based object storage 348, and 2) at least one of thelocal storage 330, 334, 338 resources or block-storage 342, 344, 346resources that are utilized by the cloud computing instances 340 a, 340b, 340 n.

As described above, when the cloud computing instances 340 a, 340 b, 340n with local storage 330, 334, 338 are embodied as EC2 instances, thecloud computing instances 340 a, 340 b, 340 n with local storage 330,334, 338 are only guaranteed to have a monthly uptime of 99.9% and datastored in the local instance store only persists during the lifetime ofeach cloud computing instance 340 a, 340 b, 340 n with local storage330, 334, 338. As such, one or more modules of computer programinstructions that are executing within the cloud-based storage system318 (e.g., a monitoring module that is executing on its own EC2instance) may be designed to handle the failure of one or more of thecloud computing instances 340 a, 340 b, 340 n with local storage 330,334, 338. In such an example, the monitoring module may handle thefailure of one or more of the cloud computing instances 340 a, 340 b,340 n with local storage 330, 334, 338 by creating one or more new cloudcomputing instances with local storage, retrieving data that was storedon the failed cloud computing instances 340 a, 340 b, 340 n from thecloud-based object storage 348, and storing the data retrieved from thecloud-based object storage 348 in local storage on the newly createdcloud computing instances. Readers will appreciate that many variants ofthis process may be implemented.

Consider an example in which all cloud computing instances 340 a, 340 b,340 n with local storage 330, 334, 338 failed. In such an example, themonitoring module may create new cloud computing instances with localstorage, where high-bandwidth instances types are selected that allowfor the maximum data transfer rates between the newly createdhigh-bandwidth cloud computing instances with local storage and thecloud-based object storage 348. Readers will appreciate that instancestypes are selected that allow for the maximum data transfer ratesbetween the new cloud computing instances and the cloud-based objectstorage 348 such that the new high-bandwidth cloud computing instancescan be rehydrated with data from the cloud-based object storage 348 asquickly as possible. Once the new high-bandwidth cloud computinginstances are rehydrated with data from the cloud-based object storage348, less expensive lower-bandwidth cloud computing instances may becreated, data may be migrated to the less expensive lower-bandwidthcloud computing instances, and the high-bandwidth cloud computinginstances may be terminated.

Readers will appreciate that in some embodiments, the number of newcloud computing instances that are created may substantially exceed thenumber of cloud computing instances that are needed to locally store allof the data stored by the cloud-based storage system 318. The number ofnew cloud computing instances that are created may substantially exceedthe number of cloud computing instances that are needed to locally storeall of the data stored by the cloud-based storage system 318 in order tomore rapidly pull data from the cloud-based object storage 348 and intothe new cloud computing instances, as each new cloud computing instancecan (in parallel) retrieve some portion of the data stored by thecloud-based storage system 318. In such embodiments, once the datastored by the cloud-based storage system 318 has been pulled into thenewly created cloud computing instances, the data may be consolidatedwithin a subset of the newly created cloud computing instances and thosenewly created cloud computing instances that are excessive may beterminated.

Consider an example in which 1000 cloud computing instances are neededin order to locally store all valid data that users of the cloud-basedstorage system 318 have written to the cloud-based storage system 318.In such an example, assume that all 1,000 cloud computing instancesfail. In such an example, the monitoring module may cause 100,000 cloudcomputing instances to be created, where each cloud computing instanceis responsible for retrieving, from the cloud-based object storage 348,distinct 1/100,000th chunks of the valid data that users of thecloud-based storage system 318 have written to the cloud-based storagesystem 318 and locally storing the distinct chunk of the dataset that itretrieved. In such an example, because each of the 100,000 cloudcomputing instances can retrieve data from the cloud-based objectstorage 348 in parallel, the caching layer may be restored 100 timesfaster as compared to an embodiment where the monitoring module onlycreate 1000 replacement cloud computing instances. In such an example,over time the data that is stored locally in the 100,000 could beconsolidated into 1,000 cloud computing instances and the remaining99,000 cloud computing instances could be terminated.

Readers will appreciate that various performance aspects of thecloud-based storage system 318 may be monitored (e.g., by a monitoringmodule that is executing in an EC2 instance) such that the cloud-basedstorage system 318 can be scaled-up or scaled-out as needed. Consider anexample in which the monitoring module monitors the performance of thecould-based storage system 318 via communications with one or more ofthe cloud computing instances 320, 322 that each are used to support theexecution of a storage controller application 324, 326, via monitoringcommunications between cloud computing instances 320, 322, 340 a, 340 b,340 n, via monitoring communications between cloud computing instances320, 322, 340 a, 340 b, 340 n and the cloud-based object storage 348, orin some other way. In such an example, assume that the monitoring moduledetermines that the cloud computing instances 320, 322 that are used tosupport the execution of a storage controller application 324, 326 areundersized and not sufficiently servicing the I/O requests that areissued by users of the cloud-based storage system 318. In such anexample, the monitoring module may create a new, more powerful cloudcomputing instance (e.g., a cloud computing instance of a type thatincludes more processing power, more memory, etc. . . . ) that includesthe storage controller application such that the new, more powerfulcloud computing instance can begin operating as the primary controller.Likewise, if the monitoring module determines that the cloud computinginstances 320, 322 that are used to support the execution of a storagecontroller application 324, 326 are oversized and that cost savingscould be gained by switching to a smaller, less powerful cloud computinginstance, the monitoring module may create a new, less powerful (andless expensive) cloud computing instance that includes the storagecontroller application such that the new, less powerful cloud computinginstance can begin operating as the primary controller.

Consider, as an additional example of dynamically sizing the cloud-basedstorage system 318, an example in which the monitoring module determinesthat the utilization of the local storage that is collectively providedby the cloud computing instances 340 a, 340 b, 340 n has reached apredetermined utilization threshold (e.g., 95%). In such an example, themonitoring module may create additional cloud computing instances withlocal storage to expand the pool of local storage that is offered by thecloud computing instances. Alternatively, the monitoring module maycreate one or more new cloud computing instances that have largeramounts of local storage than the already existing cloud computinginstances 340 a, 340 b, 340 n, such that data stored in an alreadyexisting cloud computing instance 340 a, 340 b, 340 n can be migrated tothe one or more new cloud computing instances and the already existingcloud computing instance 340 a, 340 b, 340 n can be terminated, therebyexpanding the pool of local storage that is offered by the cloudcomputing instances. Likewise, if the pool of local storage that isoffered by the cloud computing instances is unnecessarily large, datacan be consolidated and some cloud computing instances can beterminated.

Readers will appreciate that the cloud-based storage system 318 may besized up and down automatically by a monitoring module applying apredetermined set of rules that may be relatively simple of relativelycomplicated. In fact, the monitoring module may not only take intoaccount the current state of the cloud-based storage system 318, but themonitoring module may also apply predictive policies that are based on,for example, observed behavior (e.g., every night from 10 PM until 6 AMusage of the storage system is relatively light), predeterminedfingerprints (e.g., every time a virtual desktop infrastructure adds 100virtual desktops, the number of IOPS directed to the storage systemincrease by X), and so on. In such an example, the dynamic scaling ofthe cloud-based storage system 318 may be based on current performancemetrics, predicted workloads, and many other factors, includingcombinations thereof.

Readers will further appreciate that because the cloud-based storagesystem 318 may be dynamically scaled, the cloud-based storage system 318may even operate in a way that is more dynamic. Consider the example ofgarbage collection. In a traditional storage system, the amount ofstorage is fixed. As such, at some point the storage system may beforced to perform garbage collection as the amount of available storagehas become so constrained that the storage system is on the verge ofrunning out of storage. In contrast, the cloud-based storage system 318described here can always ‘add’ additional storage (e.g., by adding morecloud computing instances with local storage). Because the cloud-basedstorage system 318 described here can always ‘add’ additional storage,the cloud-based storage system 318 can make more intelligent decisionsregarding when to perform garbage collection. For example, thecloud-based storage system 318 may implement a policy that garbagecollection only be performed when the number of IOPS being serviced bythe cloud-based storage system 318 falls below a certain level. In someembodiments, other system-level functions (e.g., deduplication,compression) may also be turned off and on in response to system load,given that the size of the cloud-based storage system 318 is notconstrained in the same way that traditional storage systems areconstrained.

Readers will appreciate that embodiments of the present disclosureresolve an issue with block-storage services offered by some cloudcomputing environments as some cloud computing environments only allowfor one cloud computing instance to connect to a block-storage volume ata single time. For example, in Amazon AWS, only a single EC2 instancemay be connected to an EBS volume. Through the use of EC2 instances withlocal storage, embodiments of the present disclosure can offermulti-connect capabilities where multiple EC2 instances can connect toanother EC2 instance with local storage (‘a drive instance’). In suchembodiments, the drive instances may include software executing withinthe drive instance that allows the drive instance to support I/Odirected to a particular volume from each connected EC2 instance. Assuch, some embodiments of the present disclosure may be embodied asmulti-connect block storage services that may not include all of thecomponents depicted in FIG. 3C.

In some embodiments, especially in embodiments where the cloud-basedobject storage 348 resources are embodied as Amazon S3, the cloud-basedstorage system 318 may include one or more modules (e.g., a module ofcomputer program instructions executing on an EC2 instance) that areconfigured to ensure that when the local storage of a particular cloudcomputing instance is rehydrated with data from S3, the appropriate datais actually in S3. This issue arises largely because S3 implements aneventual consistency model where, when overwriting an existing object,reads of the object will eventually (but not necessarily immediately)become consistent and will eventually (but not necessarily immediately)return the overwritten version of the object. To address this issue, insome embodiments of the present disclosure, objects in S3 are neveroverwritten. Instead, a traditional ‘overwrite’ would result in thecreation of the new object (that includes the updated version of thedata) and the eventual deletion of the old object (that includes theprevious version of the data).

In some embodiments of the present disclosure, as part of an attempt tonever (or almost never) overwrite an object, when data is written to S3the resultant object may be tagged with a sequence number. In someembodiments, these sequence numbers may be persisted elsewhere (e.g., ina database) such that at any point in time, the sequence numberassociated with the most up-to-date version of some piece of data can beknown. In such a way, a determination can be made as to whether S3 hasthe most recent version of some piece of data by merely reading thesequence number associated with an object—and without actually readingthe data from S3. The ability to make this determination may beparticularly important when a cloud computing instance with localstorage crashes, as it would be undesirable to rehydrate the localstorage of a replacement cloud computing instance with out-of-date data.In fact, because the cloud-based storage system 318 does not need toaccess the data to verify its validity, the data can stay encrypted andaccess charges can be avoided.

The storage systems described above may carry out intelligent databackup techniques through which data stored in the storage system may becopied and stored in a distinct location to avoid data loss in the eventof equipment failure or some other form of catastrophe. For example, thestorage systems described above may be configured to examine each backupto avoid restoring the storage system to an undesirable state. Consideran example in which malware infects the storage system. In such anexample, the storage system may include software resources 314 that canscan each backup to identify backups that were captured before themalware infected the storage system and those backups that were capturedafter the malware infected the storage system. In such an example, thestorage system may restore itself from a backup that does not includethe malware—or at least not restore the portions of a backup thatcontained the malware. In such an example, the storage system mayinclude software resources 314 that can scan each backup to identify thepresences of malware (or a virus, or some other undesirable), forexample, by identifying write operations that were serviced by thestorage system and originated from a network subnet that is suspected tohave delivered the malware, by identifying write operations that wereserviced by the storage system and originated from a user that issuspected to have delivered the malware, by identifying write operationsthat were serviced by the storage system and examining the content ofthe write operation against fingerprints of the malware, and in manyother ways.

Readers will further appreciate that the backups (often in the form ofone or more snapshots) may also be utilized to perform rapid recovery ofthe storage system. Consider an example in which the storage system isinfected with ransomware that locks users out of the storage system. Insuch an example, software resources 314 within the storage system may beconfigured to detect the presence of ransomware and may be furtherconfigured to restore the storage system to a point-in-time, using theretained backups, prior to the point-in-time at which the ransomwareinfected the storage system. In such an example, the presence ofransomware may be explicitly detected through the use of software toolsutilized by the system, through the use of a key (e.g., a USB drive)that is inserted into the storage system, or in a similar way. Likewise,the presence of ransomware may be inferred in response to systemactivity meeting a predetermined fingerprint such as, for example, noreads or writes coming into the system for a predetermined period oftime.

Readers will appreciate that the various components described above maybe grouped into one or more optimized computing packages as convergedinfrastructures. Such converged infrastructures may include pools ofcomputers, storage and networking resources that can be shared bymultiple applications and managed in a collective manner usingpolicy-driven processes. Such converged infrastructures may beimplemented with a converged infrastructure reference architecture, withstandalone appliances, with a software driven hyper-converged approach(e.g., hyper-converged infrastructures), or in other ways.

Readers will appreciate that the storage systems described above may beuseful for supporting various types of software applications. Forexample, the storage system 306 may be useful in supporting artificialintelligence (‘AI’) applications, database applications, DevOpsprojects, electronic design automation tools, event-driven softwareapplications, high performance computing applications, simulationapplications, high-speed data capture and analysis applications, machinelearning applications, media production applications, media servingapplications, picture archiving and communication systems (‘PACS’)applications, software development applications, virtual realityapplications, augmented reality applications, and many other types ofapplications by providing storage resources to such applications.

The storage systems described above may operate to support a widevariety of applications. In view of the fact that the storage systemsinclude compute resources, storage resources, and a wide variety ofother resources, the storage systems may be well suited to supportapplications that are resource intensive such as, for example, AIapplications. AI applications may be deployed in a variety of fields,including: predictive maintenance in manufacturing and related fields,healthcare applications such as patient data & risk analytics, retailand marketing deployments (e.g., search advertising, social mediaadvertising), supply chains solutions, fintech solutions such asbusiness analytics & reporting tools, operational deployments such asreal-time analytics tools, application performance management tools, ITinfrastructure management tools, and many others.

Such AI applications may enable devices to perceive their environmentand take actions that maximize their chance of success at some goal.Examples of such AI applications can include IBM Watson, MicrosoftOxford, Google DeepMind, Baidu Minwa, and others. The storage systemsdescribed above may also be well suited to support other types ofapplications that are resource intensive such as, for example, machinelearning applications. Machine learning applications may perform varioustypes of data analysis to automate analytical model building. Usingalgorithms that iteratively learn from data, machine learningapplications can enable computers to learn without being explicitlyprogrammed. One particular area of machine learning is referred to asreinforcement learning, which involves taking suitable actions tomaximize reward in a particular situation. Reinforcement learning may beemployed to find the best possible behavior or path that a particularsoftware application or machine should take in a specific situation.Reinforcement learning differs from other areas of machine learning(e.g., supervised learning, unsupervised learning) in that correctinput/output pairs need not be presented for reinforcement learning andsub-optimal actions need not be explicitly corrected.

In addition to the resources already described, the storage systemsdescribed above may also include graphics processing units (‘GPUs’),occasionally referred to as visual processing unit (‘VPUs’). Such GPUsmay be embodied as specialized electronic circuits that rapidlymanipulate and alter memory to accelerate the creation of images in aframe buffer intended for output to a display device. Such GPUs may beincluded within any of the computing devices that are part of thestorage systems described above, including as one of many individuallyscalable components of a storage system, where other examples ofindividually scalable components of such storage system can includestorage components, memory components, compute components (e.g., CPUs,FPGAs, ASICs), networking components, software components, and others.In addition to GPUs, the storage systems described above may alsoinclude neural network processors (‘NNPs’) for use in various aspects ofneural network processing. Such NNPs may be used in place of (or inaddition to) GPUs and may be also be independently scalable.

As described above, the storage systems described herein may beconfigured to support artificial intelligence applications, machinelearning applications, big data analytics applications, and many othertypes of applications. The rapid growth in these sort of applications isbeing driven by three technologies: deep learning (DL), GPU processors,and Big Data. Deep learning is a computing model that makes use ofmassively parallel neural networks inspired by the human brain. Insteadof experts handcrafting software, a deep learning model writes its ownsoftware by learning from lots of examples. Such GPUs may includethousands of cores that are well-suited to run algorithms that looselyrepresent the parallel nature of the human brain.

Advances in deep neural networks have ignited a new wave of algorithmsand tools for data scientists to tap into their data with artificialintelligence (AI). With improved algorithms, larger data sets, andvarious frameworks (including open-source software libraries for machinelearning across a range of tasks), data scientists are tackling new usecases like autonomous driving vehicles, natural language processing andunderstanding, computer vision, machine reasoning, strong AI, and manyothers. Applications of such techniques may include: machine andvehicular object detection, identification and avoidance; visualrecognition, classification and tagging; algorithmic financial tradingstrategy performance management; simultaneous localization and mapping;predictive maintenance of high-value machinery; prevention against cybersecurity threats, expertise automation; image recognition andclassification; question answering; robotics; text analytics(extraction, classification) and text generation and translation; andmany others. Applications of AI techniques has materialized in a widearray of products include, for example, Amazon Echo's speech recognitiontechnology that allows users to talk to their machines, GoogleTranslate™ which allows for machine-based language translation,Spotify's Discover Weekly that provides recommendations on new songs andartists that a user may like based on the user's usage and trafficanalysis, Quill's text generation offering that takes structured dataand turns it into narrative stories, Chatbots that provide real-time,contextually specific answers to questions in a dialog format, and manyothers.

Data is the heart of modern AI and deep learning algorithms. Beforetraining can begin, one problem that must be addressed revolves aroundcollecting the labeled data that is crucial for training an accurate AImodel. A full scale AI deployment may be required to continuouslycollect, clean, transform, label, and store large amounts of data.Adding additional high quality data points directly translates to moreaccurate models and better insights. Data samples may undergo a seriesof processing steps including, but not limited to: 1) ingesting the datafrom an external source into the training system and storing the data inraw form, 2) cleaning and transforming the data in a format convenientfor training, including linking data samples to the appropriate label,3) exploring parameters and models, quickly testing with a smallerdataset, and iterating to converge on the most promising models to pushinto the production cluster, 4) executing training phases to selectrandom batches of input data, including both new and older samples, andfeeding those into production GPU servers for computation to updatemodel parameters, and 5) evaluating including using a holdback portionof the data not used in training in order to evaluate model accuracy onthe holdout data. This lifecycle may apply for any type of parallelizedmachine learning, not just neural networks, or deep learning. Forexample, standard machine learning frameworks may rely on CPUs insteadof GPUs but the data ingest and training workflows may be the same.Readers will appreciate that a single shared storage data hub creates acoordination point throughout the lifecycle without the need for extradata copies among the ingest, preprocessing, and training stages. Rarelyis the ingested data used for only one purpose, and shared storage givesthe flexibility to train multiple different models or apply traditionalanalytics to the data.

Readers will appreciate that each stage in the AI data pipeline may havevarying requirements from the data hub (e.g., the storage system orcollection of storage systems). Scale-out storage systems must deliveruncompromising performance for all manner of access types andpatterns—from small, metadata-heavy to large files, from random tosequential access patterns, and from low to high concurrency. Thestorage systems described above may serve as an ideal AI data hub as thesystems may service unstructured workloads. In the first stage, data isideally ingested and stored on to the same data hub that followingstages will use, in order to avoid excess data copying. The next twosteps can be done on a standard compute server that optionally includesa GPU, and then in the fourth and last stage, full training productionjobs are run on powerful GPU-accelerated servers. Often, there is aproduction pipeline alongside an experimental pipeline operating on thesame dataset. Further, the GPU-accelerated servers can be usedindependently for different models or joined together to train on onelarger model, even spanning multiple systems for distributed training.If the shared storage tier is slow, then data must be copied to localstorage for each phase, resulting in wasted time staging data ontodifferent servers. The ideal data hub for the AI training pipelinedelivers performance similar to data stored locally on the server nodewhile also having the simplicity and performance to enable all pipelinestages to operate concurrently.

Although the preceding paragraphs discuss deep learning applications,readers will appreciate that the storage systems described herein mayalso be part of a distributed deep learning (‘DDL’) platform to supportthe execution of DDL algorithms. The storage systems described above mayalso be paired with other technologies such as TensorFlow, anopen-source software library for dataflow programming across a range oftasks that may be used for machine learning applications such as neuralnetworks, to facilitate the development of such machine learning models,applications, and so on.

The storage systems described above may also be used in a neuromorphiccomputing environment. Neuromorphic computing is a form of computingthat mimics brain cells. To support neuromorphic computing, anarchitecture of interconnected “neurons” replace traditional computingmodels with low-powered signals that go directly between neurons formore efficient computation. Neuromorphic computing may make use ofvery-large-scale integration (VLSI) systems containing electronic analogcircuits to mimic neuro-biological architectures present in the nervoussystem, as well as analog, digital, mixed-mode analog/digital VLSI, andsoftware systems that implement models of neural systems for perception,motor control, or multisensory integration.

Readers will appreciate that the storage systems described above may beconfigured to support the storage or use of (among other types of data)blockchains. In addition to supporting the storage and use of blockchaintechnologies, the storage systems described above may also support thestorage and use of derivative items such as, for example, open sourceblockchains and related tools that are part of the IBM™ Hyperledgerproject, permissioned blockchains in which a certain number of trustedparties are allowed to access the block chain, blockchain products thatenable developers to build their own distributed ledger projects, andothers. Blockchains and the storage systems described herein may beleveraged to support on-chain storage of data as well as off-chainstorage of data.

Off-chain storage of data can be implemented in a variety of ways andcan occur when the data itself is not stored within the blockchain. Forexample, in one embodiment, a hash function may be utilized and the dataitself may be fed into the hash function to generate a hash value. Insuch an example, the hashes of large pieces of data may be embeddedwithin transactions, instead of the data itself. Readers will appreciatethat, in other embodiments, alternatives to blockchains may be used tofacilitate the decentralized storage of information. For example, onealternative to a blockchain that may be used is a blockweave. Whileconventional blockchains store every transaction to achieve validation,a blockweave permits secure decentralization without the usage of theentire chain, thereby enabling low cost on-chain storage of data. Suchblockweaves may utilize a consensus mechanism that is based on proof ofaccess (PoA) and proof of work (PoW).

The storage systems described above may, either alone or in combinationwith other computing devices, be used to support in-memory computingapplications. In-memory computing involves the storage of information inRAM that is distributed across a cluster of computers. Readers willappreciate that the storage systems described above, especially thosethat are configurable with customizable amounts of processing resources,storage resources, and memory resources (e.g., those systems in whichblades that contain configurable amounts of each type of resource), maybe configured in a way so as to provide an infrastructure that cansupport in-memory computing. Likewise, the storage systems describedabove may include component parts (e.g., NVDIMMs, 3D crosspoint storagethat provide fast random access memory that is persistent) that canactually provide for an improved in-memory computing environment ascompared to in-memory computing environments that rely on RAMdistributed across dedicated servers.

In some embodiments, the storage systems described above may beconfigured to operate as a hybrid in-memory computing environment thatincludes a universal interface to all storage media (e.g., RAM, flashstorage, 3D crosspoint storage). In such embodiments, users may have noknowledge regarding the details of where their data is stored but theycan still use the same full, unified API to address data. In suchembodiments, the storage system may (in the background) move data to thefastest layer available—including intelligently placing the data independence upon various characteristics of the data or in dependenceupon some other heuristic. In such an example, the storage systems mayeven make use of existing products such as Apache Ignite and GridGain tomove data between the various storage layers, or the storage systems maymake use of custom software to move data between the various storagelayers. The storage systems described herein may implement variousoptimizations to improve the performance of in-memory computing such as,for example, having computations occur as close to the data as possible.

Readers will further appreciate that in some embodiments, the storagesystems described above may be paired with other resources to supportthe applications described above. For example, one infrastructure couldinclude primary compute in the form of servers and workstations whichspecialize in using General-purpose computing on graphics processingunits (‘GPGPU’) to accelerate deep learning applications that areinterconnected into a computation engine to train parameters for deepneural networks. Each system may have Ethernet external connectivity,InfiniBand external connectivity, some other form of externalconnectivity, or some combination thereof. In such an example, the GPUscan be grouped for a single large training or used independently totrain multiple models. The infrastructure could also include a storagesystem such as those described above to provide, for example, ascale-out all-flash file or object store through which data can beaccessed via high-performance protocols such as NFS, S3, and so on. Theinfrastructure can also include, for example, redundant top-of-rackEthernet switches connected to storage and compute via ports in MLAGport channels for redundancy. The infrastructure could also includeadditional compute in the form of whitebox servers, optionally withGPUs, for data ingestion, pre-processing, and model debugging. Readerswill appreciate that additional infrastructures are also be possible.

Readers will appreciate that the storage systems described above, eitheralone or in coordination with other computing machinery may beconfigured to support other AI related tools. For example, the storagesystems may make use of tools like ONXX or other open neural networkexchange formats that make it easier to transfer models written indifferent AI frameworks. Likewise, the storage systems may be configuredto support tools like Amazon's Gluon that allow developers to prototype,build, and train deep learning models. In fact, the storage systemsdescribed above may be part of a larger platform, such as IBM™ CloudPrivate for Data, that includes integrated data science, dataengineering and application building services.

Readers will further appreciate that the storage systems described abovemay also be deployed as an edge solution. Such an edge solution may bein place to optimize cloud computing systems by performing dataprocessing at the edge of the network, near the source of the data. Edgecomputing can push applications, data, and computing power (i.e.,services) away from centralized points to the logical extremes of anetwork. Through the use of edge solutions such as the storage systemsdescribed above, computational tasks may be performed using the computeresources provided by such storage systems, data may be storage usingthe storage resources of the storage system, and cloud-based servicesmay be accessed through the use of various resources of the storagesystem (including networking resources). By performing computationaltasks on the edge solution, storing data on the edge solution, andgenerally making use of the edge solution, the consumption of expensivecloud-based resources may be avoided and, in fact, performanceimprovements may be experienced relative to a heavier reliance oncloud-based resources.

While many tasks may benefit from the utilization of an edge solution,some particular uses may be especially suited for deployment in such anenvironment. For example, devices like drones, autonomous cars, robots,and others may require extremely rapid processing—so fast, in fact, thatsending data up to a cloud environment and back to receive dataprocessing support may simply be too slow. As an additional example,some IoT devices such as connected video cameras may not be well-suitedfor the utilization of cloud-based resources as it may be impractical(not only from a privacy perspective, security perspective, or afinancial perspective) to send the data to the cloud simply because ofthe pure volume of data that is involved. As such, many tasks thatreally on data processing, storage, or communications may be bettersuited by platforms that include edge solutions such as the storagesystems described above.

The storage systems described above may alone, or in combination withother computing resources, serves as a network edge platform thatcombines compute resources, storage resources, networking resources,cloud technologies and network virtualization technologies, and so on.As part of the network, the edge may take on characteristics similar toother network facilities, from the customer premise and backhaulaggregation facilities to Points of Presence (PoPs) and regional datacenters. Readers will appreciate that network workloads, such as VirtualNetwork Functions (VNFs) and others, will reside on the network edgeplatform. Enabled by a combination of containers and virtual machines,the network edge platform may rely on controllers and schedulers thatare no longer geographically co-located with the data processingresources. The functions, as microservices, may split into controlplanes, user, and data planes, or even state machines, allowing forindependent optimization and scaling techniques to be applied. Such userand data planes may be enabled through increased accelerators, boththose residing in server platforms, such as FPGAs and Smart NICs, andthrough SDN-enabled merchant silicon and programmable ASICs.

The storage systems described above may also be optimized for use in bigdata analytics. Big data analytics may be generally described as theprocess of examining large and varied data sets to uncover hiddenpatterns, unknown correlations, market trends, customer preferences andother useful information that can help organizations make more-informedbusiness decisions. As part of that process, semi-structured andunstructured data such as, for example, internet clickstream data, webserver logs, social media content, text from customer emails and surveyresponses, mobile-phone call-detail records, IoT sensor data, and otherdata may be converted to a structured form.

The storage systems described above may also support (includingimplementing as a system interface) applications that perform tasks inresponse to human speech. For example, the storage systems may supportthe execution intelligent personal assistant applications such as, forexample, Amazon's Alexa, Apple Siri, Google Voice, Samsung Bixby,Microsoft Cortana, and others. While the examples described in theprevious sentence make use of voice as input, the storage systemsdescribed above may also support chatbots, talkbots, chatterbots, orartificial conversational entities or other applications that areconfigured to conduct a conversation via auditory or textual methods.Likewise, the storage system may actually execute such an application toenable a user such as a system administrator to interact with thestorage system via speech. Such applications are generally capable ofvoice interaction, music playback, making to-do lists, setting alarms,streaming podcasts, playing audiobooks, and providing weather, traffic,and other real time information, such as news, although in embodimentsin accordance with the present disclosure, such applications may beutilized as interfaces to various system management operations.

The storage systems described above may also implement AI platforms fordelivering on the vision of self-driving storage. Such AI platforms maybe configured to deliver global predictive intelligence by collectingand analyzing large amounts of storage system telemetry data points toenable effortless management, analytics, and support. In fact, suchstorage systems may be capable of predicting both capacity andperformance, as well as generating intelligent advice on workloaddeployment, interaction, and optimization. Such AI platforms may beconfigured to scan all incoming storage system telemetry data against alibrary of issue fingerprints to predict and resolve incidents inreal-time, before they impact customer environments, and captureshundreds of variables related to performance that are used to forecastperformance load.

The storage systems described above may support the serialized orsimultaneous execution of artificial intelligence applications, machinelearning applications, data analytics applications, datatransformations, and other tasks that collectively may form an AIladder. Such an AI ladder may effectively be formed by combining suchelements to form a complete data science pipeline, where existdependencies between elements of the AI ladder. For example, AI mayrequire that some form of machine learning has taken place, machinelearning may require that some form of analytics has taken place,analytics may require that some form of data and informationarchitecting has taken place, and so on. As such, each element may beviewed as a rung in an AI ladder that collectively can form a completeand sophisticated AI solution.

The storage systems described above may also, either alone or incombination with other computing environments, be used to deliver an AIeverywhere experience where AI permeates wide and expansive aspects ofbusiness and life. For example, AI may play an important role in thedelivery of deep learning solutions, deep reinforcement learningsolutions, artificial general intelligence solutions, autonomousvehicles, cognitive computing solutions, commercial UAVs or drones,conversational user interfaces, enterprise taxonomies, ontologymanagement solutions, machine learning solutions, smart dust, smartrobots, smart workplaces, and many others.

The storage systems described above may also, either alone or incombination with other computing environments, be used to deliver a widerange of transparently immersive experiences (including those that usedigital twins of various “things” such as people, places, processes,systems, and so on) where technology can introduce transparency betweenpeople, businesses, and things. Such transparently immersive experiencesmay be delivered as augmented reality technologies, connected homes,virtual reality technologies, brain—computer interfaces, humanaugmentation technologies, nanotube electronics, volumetric displays, 4Dprinting technologies, or others.

The storage systems described above may also, either alone or incombination with other computing environments, be used to support a widevariety of digital platforms. Such digital platforms can include, forexample, 5G wireless systems and platforms, digital twin platforms, edgecomputing platforms, IoT platforms, quantum computing platforms,serverless PaaS, software-defined security, neuromorphic computingplatforms, and so on.

The storage systems described above may also be part of a multi-cloudenvironment in which multiple cloud computing and storage services aredeployed in a single heterogeneous architecture. In order to facilitatethe operation of such a multi-cloud environment, DevOps tools may bedeployed to enable orchestration across clouds. Likewise, continuousdevelopment and continuous integration tools may be deployed tostandardize processes around continuous integration and delivery, newfeature rollout and provisioning cloud workloads. By standardizing theseprocesses, a multi-cloud strategy may be implemented that enables theutilization of the best provider for each workload.

The storage systems described above may be used as a part of a platformto enable the use of crypto-anchors that may be used to authenticate aproduct's origins and contents to ensure that it matches a blockchainrecord associated with the product. Similarly, as part of a suite oftools to secure data stored on the storage system, the storage systemsdescribed above may implement various encryption technologies andschemes, including lattice cryptography. Lattice cryptography caninvolve constructions of cryptographic primitives that involve lattices,either in the construction itself or in the security proof. Unlikepublic-key schemes such as the RSA, Diffie-Hellman, or Elliptic-Curvecryptosystems, which are easily attacked by a quantum computer, somelattice-based constructions appear to be resistant to attack by bothclassical and quantum computers.

A quantum computer is a device that performs quantum computing. Quantumcomputing is computing using quantum-mechanical phenomena, such assuperposition and entanglement. Quantum computers differ fromtraditional computers that are based on transistors, as such traditionalcomputers require that data be encoded into binary digits (bits), eachof which is always in one of two definite states (0 or 1). In contrastto traditional computers, quantum computers use quantum bits, which canbe in superpositions of states. A quantum computer maintains a sequenceof qubits, where a single qubit can represent a one, a zero, or anyquantum superposition of those two qubit states. A pair of qubits can bein any quantum superposition of 4 states, and three qubits in anysuperposition of 8 states. A quantum computer with n qubits cangenerally be in an arbitrary superposition of up to 2{circumflex over( )}n different states simultaneously, whereas a traditional computercan only be in one of these states at any one time. A quantum Turingmachine is a theoretical model of such a computer.

The storage systems described above may also be paired withFPGA-accelerated servers as part of a larger AI or ML infrastructure.Such FPGA-accelerated servers may reside near (e.g., in the same datacenter) the storage systems described above or even incorporated into anappliance that includes one or more storage systems, one or moreFPGA-accelerated servers, networking infrastructure that supportscommunications between the one or more storage systems and the one ormore FPGA-accelerated servers, as well as other hardware and softwarecomponents. Alternatively, FPGA-accelerated servers may reside within acloud computing environment that may be used to perform compute-relatedtasks for AI and ML jobs. Any of the embodiments described above may beused to collectively serve as a FPGA-based AI or ML platform. Readerswill appreciate that, in some embodiments of the FPGA-based AI or MLplatform, the FPGAs that are contained within the FPGA-acceleratedservers may be reconfigured for different types of ML models (e.g.,LSTMs, CNNs, GRUs). The ability to reconfigure the FPGAs that arecontained within the FPGA-accelerated servers may enable theacceleration of a ML or AI application based on the most optimalnumerical precision and memory model being used. Readers will appreciatethat by treating the collection of FPGA-accelerated servers as a pool ofFPGAs, any CPU in the data center may utilize the pool of FPGAs as ashared hardware microservice, rather than limiting a server to dedicatedaccelerators plugged into it.

The FPGA-accelerated servers and the GPU-accelerated servers describedabove may implement a model of computing where, rather than keeping asmall amount of data in a CPU and running a long stream of instructionsover it as occurred in more traditional computing models, the machinelearning model and parameters are pinned into the high-bandwidth on-chipmemory with lots of data streaming though the high-bandwidth on-chipmemory. FPGAs may even be more efficient than GPUs for this computingmodel, as the FPGAs can be programmed with only the instructions neededto run this kind of computing model.

The storage systems described above may be configured to provideparallel storage, for example, through the use of a parallel file systemsuch as BeeGFS. Such parallel files systems may include a distributedmetadata architecture. For example, the parallel file system may includea plurality of metadata servers across which metadata is distributed, aswell as components that include services for clients and storageservers.

The systems described above can support the execution of a wide array ofsoftware applications. Such software applications can be deployed in avariety of ways, including container-based deployment models.Containerized applications may be managed using a variety of tools. Forexample, containerized applications may be managed using Docker Swarm,Kubernetes, and others. Containerized applications may be used tofacilitate a serverless, cloud native computing deployment andmanagement model for software applications. In support of a serverless,cloud native computing deployment and management model for softwareapplications, containers may be used as part of an event handlingmechanisms (e.g., AWS Lambdas) such that various events cause acontainerized application to be spun up to operate as an event handler.

The systems described above may be deployed in a variety of ways,including being deployed in ways that support fifth generation (‘5G’)networks. 5G networks may support substantially faster datacommunications than previous generations of mobile communicationsnetworks and, as a consequence may lead to the disaggregation of dataand computing resources as modern massive data centers may become lessprominent and may be replaced, for example, by more-local, micro datacenters that are close to the mobile-network towers. The systemsdescribed above may be included in such local, micro data centers andmay be part of or paired to multi-access edge computing (‘MEC’) systems.Such MEC systems may enable cloud computing capabilities and an ITservice environment at the edge of the cellular network. By runningapplications and performing related processing tasks closer to thecellular customer, network congestion may be reduced and applicationsmay perform better.

For further explanation, FIG. 3D illustrates an exemplary computingdevice 350 that may be specifically configured to perform one or more ofthe processes described herein. As shown in FIG. 3D, computing device350 may include a communication interface 352, a processor 354, astorage device 356, and an input/output (“I/O”) module 358communicatively connected one to another via a communicationinfrastructure 360. While an exemplary computing device 350 is shown inFIG. 3D, the components illustrated in FIG. 3D are not intended to belimiting. Additional or alternative components may be used in otherembodiments. Components of computing device 350 shown in FIG. 3D willnow be described in additional detail.

Communication interface 352 may be configured to communicate with one ormore computing devices. Examples of communication interface 352 include,without limitation, a wired network interface (such as a networkinterface card), a wireless network interface (such as a wirelessnetwork interface card), a modem, an audio/video connection, and anyother suitable interface.

Processor 354 generally represents any type or form of processing unitcapable of processing data and/or interpreting, executing, and/ordirecting execution of one or more of the instructions, processes,and/or operations described herein. Processor 354 may perform operationsby executing computer-executable instructions 362 (e.g., an application,software, code, and/or other executable data instance) stored in storagedevice 356.

Storage device 356 may include one or more data storage media, devices,or configurations and may employ any type, form, and combination of datastorage media and/or device. For example, storage device 356 mayinclude, but is not limited to, any combination of the non-volatilemedia and/or volatile media described herein. Electronic data, includingdata described herein, may be temporarily and/or permanently stored instorage device 356. For example, data representative ofcomputer-executable instructions 362 configured to direct processor 354to perform any of the operations described herein may be stored withinstorage device 356. In some examples, data may be arranged in one ormore databases residing within storage device 356.

I/O module 358 may include one or more I/O modules configured to receiveuser input and provide user output. I/O module 358 may include anyhardware, firmware, software, or combination thereof supportive of inputand output capabilities. For example, I/O module 358 may includehardware and/or software for capturing user input, including, but notlimited to, a keyboard or keypad, a touchscreen component (e.g.,touchscreen display), a receiver (e.g., an RF or infrared receiver),motion sensors, and/or one or more input buttons.

I/O module 358 may include one or more devices for presenting output toa user, including, but not limited to, a graphics engine, a display(e.g., a display screen), one or more output drivers (e.g., displaydrivers), one or more audio speakers, and one or more audio drivers. Incertain embodiments, I/O module 358 is configured to provide graphicaldata to a display for presentation to a user. The graphical data may berepresentative of one or more graphical user interfaces and/or any othergraphical content as may serve a particular implementation. In someexamples, any of the systems, computing devices, and/or other componentsdescribed herein may be implemented by computing device 350.

For further explanation, FIG. 4A sets forth a block diagram illustratinga plurality of storage systems (402, 404, 406) that support a podaccording to some embodiments of the present disclosure. Althoughdepicted in less detail, the storage systems (402, 404, 406) depicted inFIG. 4A may be similar to the storage systems described above withreference to FIGS. 1A-1D, FIGS. 2A-2G, FIGS. 3A-3B, or any combinationthereof. In fact, the storage systems (402, 404, 406) depicted in FIG.4A may include the same, fewer, or additional components as the storagesystems described above.

In the example depicted in FIG. 4A, each of the storage systems (402,404, 406) is depicted as having at least one computer processor (408,410, 412), computer memory (414, 416, 418), and computer storage (420,422, 424). Although in some embodiments the computer memory (414, 416,418) and the computer storage (420, 422, 424) may be part of the samehardware devices, in other embodiments the computer memory (414, 416,418) and the computer storage (420, 422, 424) may be part of differenthardware devices. The distinction between the computer memory (414, 416,418) and the computer storage (420, 422, 424) in this particular examplemay be that the computer memory (414, 416, 418) is physically proximateto the computer processors (408, 410, 412) and may store computerprogram instructions that are executed by the computer processors (408,410, 412), while the computer storage (420, 422, 424) is embodied asnon-volatile storage for storing user data, metadata describing the userdata, and so on. Referring to the example above in FIG. 1A, for example,the computer processors (408, 410, 412) and computer memory (414, 416,418) for a particular storage system (402, 404, 406) may reside withinone of more of the controllers (110A-110D) while the attached storagedevices (171A-171F) may serve as the computer storage (420, 422, 424)within a particular storage system (402, 404, 406).

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may attach to one or more pods (430, 432) according to someembodiments of the present disclosure. Each of the pods (430, 432)depicted in FIG. 4A can include a dataset (426, 428). For example, afirst pod (430) that three storage systems (402, 404, 406) have attachedto includes a first dataset (426) while a second pod (432) that twostorage systems (404, 406) have attached to includes a second dataset(428). In such an example, when a particular storage system attaches toa pod, the pod's dataset is copied to the particular storage system andthen kept up to date as the dataset is modified. Storage systems can beremoved from a pod, resulting in the dataset being no longer kept up todate on the removed storage system. In the example depicted in FIG. 4A,any storage system which is active for a pod (it is an up-to-date,operating, non-faulted member of a non-faulted pod) can receive andprocess requests to modify or read the pod's dataset.

In the example depicted in FIG. 4A, each pod (430, 432) may also includea set of managed objects and management operations, as well as a set ofaccess operations to modify or read the dataset (426, 428) that isassociated with the particular pod (430, 432). In such an example, themanagement operations may modify or query managed objects equivalentlythrough any of the storage systems. Likewise, access operations to reador modify the dataset may operate equivalently through any of thestorage systems. In such an example, while each storage system stores aseparate copy of the dataset as a proper subset of the datasets storedand advertised for use by the storage system, the operations to modifymanaged objects or the dataset performed and completed through any onestorage system are reflected in subsequent management objects to querythe pod or subsequent access operations to read the dataset.

Readers will appreciate that pods may implement more capabilities thanjust a clustered synchronously replicated dataset. For example, pods canbe used to implement tenants, whereby datasets are in some way securelyisolated from each other. Pods can also be used to implement virtualarrays or virtual storage systems where each pod is presented as aunique storage entity on a network (e.g., a Storage Area Network, orInternet Protocol network) with separate addresses. In the case of amulti-storage-system pod implementing a virtual storage system, allphysical storage systems associated with the pod may present themselvesas in some way the same storage system (e.g., as if the multiplephysical storage systems were no different than multiple network portsinto a single storage system).

Readers will appreciate that pods may also be units of administration,representing a collection of volumes, file systems, object/analyticstores, snapshots, and other administrative entities, where makingadministrative changes (e.g., name changes, property changes, managingexports or permissions for some part of the pod's dataset), on any onestorage system is automatically reflected to all active storage systemsassociated with the pod. In addition, pods could also be units of datacollection and data analysis, where performance and capacity metrics arepresented in ways that aggregate across all active storage systems forthe pod, or that call out data collection and analysis separately foreach pod, or perhaps presenting each attached storage system'scontribution to the incoming content and performance for each a pod.

One model for pod membership may be defined as a list of storagesystems, and a subset of that list where storage systems are consideredto be in-sync for the pod. A storage system may be considered to bein-sync for a pod if it is at least within a recovery of havingidentical idle content for the last written copy of the datasetassociated with the pod. Idle content is the content after anyin-progress modifications have completed with no processing of newmodifications. Sometimes this is referred to as “crash recoverable”consistency. Recovery of a pod carries out the process of reconcilingdifferences in applying concurrent updates to in-sync storage systems inthe pod. Recovery can resolve any inconsistencies between storagesystems in the completion of concurrent modifications that had beenrequested to various members of the pod but that were not signaled toany requestor as having completed successfully. Storage systems that arelisted as pod members but that are not listed as in-sync for the pod canbe described as “detached” from the pod. Storage systems that are listedas pod members, are in-sync for the pod, and are currently available foractively serving data for the pod are “online” for the pod.

Each storage system member of a pod may have its own copy of themembership, including which storage systems it last knew were in-sync,and which storage systems it last knew comprised the entire set of podmembers. To be online for a pod, a storage system must consider itselfto be in-sync for the pod and must be communicating with all otherstorage systems it considers to be in-sync for the pod. If a storagesystem can't be certain that it is in-sync and communicating with allother storage systems that are in-sync, then it must stop processing newincoming requests for the pod (or must complete them with an error orexception) until it can be certain that it is in-sync and communicatingwith all other storage systems that are in-sync. A first storage systemmay conclude that a second paired storage system should be detached,which will allow the first storage system to continue since it is nowin-sync with all storage systems now in the list. But, the secondstorage system must be prevented from concluding, alternatively, thatthe first storage system should be detached and with the second storagesystem continuing operation. This would result in a “split brain”condition that can lead to irreconcilable datasets, dataset corruption,or application corruption, among other dangers.

The situation of needing to determine how to proceed when notcommunicating with paired storage systems can arise while a storagesystem is running normally and then notices lost communications, whileit is currently recovering from some previous fault, while it isrebooting or resuming from a temporary power loss or recoveredcommunication outage, while it is switching operations from one set ofstorage system controller to another set for whatever reason, or duringor after any combination of these or other kinds of events. In fact, anytime a storage system that is associated with a pod can't communicatewith all known non-detached members, the storage system can either waitbriefly until communications can be established, go offline and continuewaiting, or it can determine through some means that it is safe todetach the non-communicating storage system without risk of incurring asplit brain due to the non-communicating storage system concluding thealternative view, and then continue. If a safe detach can happen quicklyenough, the storage system can remain online for the pod with littlemore than a short delay and with no resulting application outages forapplications that can issue requests to the remaining online storagesystems.

One example of this situation is when a storage system may know that itis out-of-date. That can happen, for example, when a first storagesystem is first added to a pod that is already associated with one ormore storage systems, or when a first storage system reconnects toanother storage system and finds that the other storage system hadalready marked the first storage system as detached. In this case, thisfirst storage system will simply wait until it connects to some otherset of storage systems that are in-sync for the pod.

This model demands some degree of consideration for how storage systemsare added to or removed from pods or from the in-sync pod members list.Since each storage system will have its own copy of the list, and sincetwo independent storage systems can't update their local copy at exactlythe same time, and since the local copy is all that is available on areboot or in various fault scenarios, care must be taken to ensure thattransient inconsistencies don't cause problems. For example, if onestorage systems is in-sync for a pod and a second storage system isadded, then if the second storage system is updated to list both storagesystems as in-sync first, then if there is a fault and a restart of bothstorage systems, the second might startup and wait to connect to thefirst storage system while the first might be unaware that it should orcould wait for the second storage system. If the second storage systemthen responds to an inability to connect with the first storage systemby going through a process to detach it, then it might succeed incompleting a process that the first storage system is unaware of,resulting in a split brain. As such, it may be necessary to ensure thatstorage systems won't disagree inappropriately on whether they might optto go through a detach process if they aren't communicating.

One way to ensure that storage systems won't disagree inappropriately onwhether they might opt to go through a detach process if they aren'tcommunicating is to ensure that when adding a new storage system to thein-sync member list for a pod, the new storage system first stores thatit is a detached member (and perhaps that it is being added as anin-sync member). Then, the existing in-sync storage systems can locallystore that the new storage system is an in-sync pod member before thenew storage system locally stores that same fact. If there is a set ofreboots or network outages prior to the new storage system storing itsin-sync status, then the original storage systems may detach the newstorage system due to non-communication, but the new storage system willwait. A reverse version of this change might be needed for removing acommunicating storage system from a pod: first the storage system beingremoved stores that it is no longer in-sync, then the storage systemsthat will remain store that the storage system being removed is nolonger in-sync, then all storage systems delete the storage system beingremoved from their pod membership lists. Depending on theimplementation, an intermediate persisted detached state may not benecessary. Whether or not care is required in local copies of membershiplists may depend on the model storage systems use for monitoring eachother or for validating their membership. If a consensus model is usedfor both, or if an external system (or an external distributed orclustered system) is used to store and validate pod membership, theninconsistencies in locally stored membership lists may not matter.

When communications fail or one or several storage systems in a podfail, or when a storage system starts up (or fails over to a secondarycontroller) and can't communicate with paired storage systems for a pod,and it is time for one or more storage systems to decide to detach oneor more paired storage systems, some algorithm or mechanism must beemployed to decide that it is safe to do so and to follow through on thedetach. One means of resolving detaches is use a majority (or quorum)model for membership. With three storage systems, as long as two arecommunicating, they can agree to detach a third storage system thatisn't communicating, but that third storage system cannot by itselfchoose to detach either of the other two. Confusion can arise whenstorage system communication is inconsistent. For example, storagesystem A might be communicating with storage system B but not C, whilestorage system B might be communicating with both A and C. So, A and Bcould detach C, or B and C could detach A, but more communicationbetween pod members may be needed to figure this out.

Care needs to be taken in a quorum membership model when adding andremoving storage systems. For example, if a fourth storage system isadded, then a “majority” of storage systems is at that point three. Thetransition from three storage systems (with two required for majority)to a pod including a fourth storage system (with three required formajority) may require something similar to the model describedpreviously for carefully adding a storage system to the in-sync list.For example, the fourth storage system might start in an attaching statebut not yet attached where it would never instigate a vote over quorum.Once in that state, the original three pod members could each be updatedto be aware of the fourth member and the new requirement for a threestorage system majority to detach a fourth. Removing a storage systemfrom a pod might similarly move that storage system to a locally stored“detaching” state before updating other pod members. A variant schemefor this is to use a distributed consensus mechanism such as PAXOS orRAFT to implement any membership changes or to process detach requests.

Another means of managing membership transitions is to use an externalsystem that is outside of the storage systems themselves to handle podmembership. In order to become online for a pod, a storage system mustfirst contact the external pod membership system to verify that it isin-sync for the pod. Any storage system that is online for a pod shouldthen remain in communication with the pod membership system and shouldwait or go offline if it loses communication. An external pod membershipmanager could be implemented as a highly available cluster using variouscluster tools, such as Oracle RAC, Linux HA, VERITAS Cluster Server,IBM's HACMP, or others. An external pod membership manager could alsouse distributed configuration tools such as Etcd or Zookeeper, or areliable distributed database such as Amazon's DynamoDB.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may receive a request to read a portion of the dataset (426,428) and process the request to read the portion of the dataset locallyaccording to some embodiments of the present disclosure. Readers willappreciate that although requests to modify (e.g., a write operation)the dataset (426, 428) require coordination between the storage systems(402, 404, 406) in a pod, as the dataset (426, 428) should be consistentacross all storage systems (402, 404, 406) in a pod, responding to arequest to read a portion of the dataset (426, 428) does not requiresimilar coordination between the storage systems (402, 404, 406). Assuch, a particular storage system that receives a read request mayservice the read request locally by reading a portion of the dataset(426, 428) that is stored within the storage system's storage devices,with no synchronous communication with other storage systems in the pod.Read requests received by one storage system for a replicated dataset ina replicated cluster are expected to avoid any communication in the vastmajority of cases, at least when received by a storage system that isrunning within a cluster that is also running nominally. Such readsshould normally be processed simply by reading from the local copy of aclustered dataset with no further interaction required with otherstorage systems in the cluster

Readers will appreciate that the storage systems may take steps toensure read consistency such that a read request will return the sameresult regardless of which storage system processes the read request.For example, the resulting clustered dataset content for any set ofupdates received by any set of storage systems in the cluster should beconsistent across the cluster, at least at any time updates are idle(all previous modifying operations have been indicated as complete andno new update requests have been received and processed in any way).More specifically, the instances of a clustered dataset across a set ofstorage systems can differ only as a result of updates that have not yetcompleted. This means, for example, that any two write requests whichoverlap in their volume block range, or any combination of a writerequest and an overlapping snapshot, compare-and-write, or virtual blockrange copy, must yield a consistent result on all copies of the dataset.Two operations should not yield a result as if they happened in oneorder on one storage system and a different order on another storagesystem in the replicated cluster.

Furthermore, read requests can be made time order consistent. Forexample, if one read request is received on a replicated cluster andcompleted and that read is then followed by another read request to anoverlapping address range which is received by the replicated clusterand where one or both reads in any way overlap in time and volumeaddress range with a modification request received by the replicatedcluster (whether any of the reads or the modification are received bythe same storage system or a different storage system in the replicatedcluster), then if the first read reflects the result of the update thenthe second read should also reflect the results of that update, ratherthan possibly returning data that preceded the update. If the first readdoes not reflect the update, then the second read can either reflect theupdate or not. This ensures that between two read requests “time” for adata segment cannot roll backward.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also detect a disruption in data communications with oneor more of the other storage systems and determine whether to theparticular storage system should remain in the pod. A disruption in datacommunications with one or more of the other storage systems may occurfor a variety of reasons. For example, a disruption in datacommunications with one or more of the other storage systems may occurbecause one of the storage systems has failed, because a networkinterconnect has failed, or for some other reason. An important aspectof synchronous replicated clustering is ensuring that any fault handlingdoesn't result in unrecoverable inconsistencies, or any inconsistency inresponses. For example, if a network fails between two storage systems,at most one of the storage systems can continue processing newlyincoming I/O requests for a pod. And, if one storage system continuesprocessing, the other storage system can't process any new requests tocompletion, including read requests.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also determine whether the particular storage systemshould remain in the pod in response to detecting a disruption in datacommunications with one or more of the other storage systems. Asmentioned above, to be ‘online’ as part of a pod, a storage system mustconsider itself to be in-sync for the pod and must be communicating withall other storage systems it considers to be in-sync for the pod. If astorage system can't be certain that it is in-sync and communicatingwith all other storage systems that are in-sync, then it may stopprocessing new incoming requests to access the dataset (426, 428). Assuch, the storage system may determine whether to the particular storagesystem should remain online as part of the pod, for example, bydetermining whether it can communicate with all other storage systems itconsiders to be in-sync for the pod (e.g., via one or more testmessages), by determining whether the all other storage systems itconsiders to be in-sync for the pod also consider the storage system tobe attached to the pod, through a combination of both steps where theparticular storage system must confirm that it can communicate with allother storage systems it considers to be in-sync for the pod and thatall other storage systems it considers to be in-sync for the pod alsoconsider the storage system to be attached to the pod, or through someother mechanism.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also keep the dataset on the particular storage systemaccessible for management and dataset operations in response todetermining that the particular storage system should remain in the pod.The storage system may keep the dataset (426, 428) on the particularstorage system accessible for management and dataset operations, forexample, by accepting requests to access the version of the dataset(426, 428) that is stored on the storage system and processing suchrequests, by accepting and processing management operations associatedwith the dataset (426, 428) that are issued by a host or authorizedadministrator, by accepting and processing management operationsassociated with the dataset (426, 428) that are issued by one of theother storage systems, or in some other way.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may, however, make the dataset on the particular storagesystem inaccessible for management and dataset operations in response todetermining that the particular storage system should not remain in thepod. The storage system may make the dataset (426, 428) on theparticular storage system inaccessible for management and datasetoperations, for example, by rejecting requests to access the version ofthe dataset (426, 428) that is stored on the storage system, byrejecting management operations associated with the dataset (426, 428)that are issued by a host or other authorized administrator, byrejecting management operations associated with the dataset (426, 428)that are issued by one of the other storage systems in the pod, or insome other way.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also detect that the disruption in data communicationswith one or more of the other storage systems has been repaired and makethe dataset on the particular storage system accessible for managementand dataset operations. The storage system may detect that thedisruption in data communications with one or more of the other storagesystems has been repaired, for example, by receiving a message from theone or more of the other storage systems. In response to detecting thatthe disruption in data communications with one or more of the otherstorage systems has been repaired, the storage system may make thedataset (426, 428) on the particular storage system accessible formanagement and dataset operations once the previously detached storagesystem has been resynchronized with the storage systems that remainedattached to the pod.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also go offline from the pod such that the particularstorage system no longer allows management and dataset operations. Thedepicted storage systems (402, 404, 406) may go offline from the podsuch that the particular storage system no longer allows management anddataset operations for a variety of reasons. For example, the depictedstorage systems (402, 404, 406) may also go offline from the pod due tosome fault with the storage system itself, because an update or someother maintenance is occurring on the storage system, due tocommunications faults, or for many other reasons. In such an example,the depicted storage systems (402, 404, 406) may subsequently update thedataset on the particular storage system to include all updates to thedataset since the particular storage system went offline and go backonline with the pod such that the particular storage system allowsmanagement and dataset operations, as will be described in greaterdetail in the resynchronization sections included below.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also identifying a target storage system forasynchronously receiving the dataset, where the target storage system isnot one of the plurality of storage systems across which the dataset issynchronously replicated. Such a target storage system may represent,for example, a backup storage system, as some storage system that makesuse of the synchronously replicated dataset, and so on. In fact,synchronous replication can be leveraged to distribute copies of adataset closer to some rack of servers, for better local readperformance. One such case is smaller top-of-rack storage systemssymmetrically replicated to larger storage systems that are centrallylocated in the data center or campus and where those larger storagesystems are more carefully managed for reliability or are connected toexternal networks for asynchronous replication or backup services.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also identify a portion of the dataset that is not beingasynchronously replicated to the target storage system by any of theother storages systems and asynchronously replicate, to the targetstorage system, the portion of the dataset that is not beingasynchronously replicated to the target storage system by any of theother storages systems, wherein the two or more storage systemscollectively replicate the entire dataset to the target storage system.In such a way, the work associated with asynchronously replicating aparticular dataset may be split amongst the members of a pod, such thateach storage system in a pod is only responsible for asynchronouslyreplicating a subset of a dataset to the target storage system.

In the example depicted in FIG. 4A, the depicted storage systems (402,404, 406) may also detach from the pod, such that the particular storagesystem that detaches from the pod is no longer included in the set ofstorage systems across which the dataset is synchronously replicated.For example, if storage system (404) in FIG. 4A detached from the pod(430) illustrated in FIG. 4A, the pod (430) would only include storagesystems (402, 406) as the storage systems across which the dataset (426)that is included in the pod (430) would be synchronously replicatedacross. In such an example, detaching the storage system from the podcould also include removing the dataset from the particular storagesystem that detached from the pod. Continuing with the example where thestorage system (404) in FIG. 4A detached from the pod (430) illustratedin FIG. 4A, the dataset (426) that is included in the pod (430) could bedeleted or otherwise removed from the storage system (404).

Readers will appreciate that there are a number of unique administrativecapabilities enabled by the pod model that can further be supported.Also, the pod model itself introduces some issues that can be addressedby an implementation. For example, when a storage system is offline fora pod, but is otherwise running, such as because an interconnect failedand another storage system for the pod won out in mediation, there maystill be a desire or need to access the offline pod's dataset on theoffline storage system. One solution may be simply to enable the pod insome detached mode and allow the dataset to be accessed. However, thatsolution can be dangerous and that solution can cause the pod's metadataand data to be much more difficult to reconcile when the storage systemsdo regain communication. Furthermore, there could still be a separatepath for hosts to access the offline storage system as well as the stillonline storage systems. In that case, a host might issue I/O to bothstorage systems even though they are no longer being kept in sync,because the host sees target ports reporting volumes with the sameidentifiers and the host I/O drivers presume it sees additional paths tothe same volume. This can result in fairly damaging data corruption asreads and writes issued to both storage systems are no longer consistenteven though the host presumes they are. As a variant of this case, in aclustered application, such as a shared storage clustered database, theclustered application running on one host might be reading or writing toone storage system and the same clustered application running on anotherhost might be reading or writing to the “detached” storage system, yetthe two instances of the clustered application are communicating betweeneach other on the presumption that the dataset they each see is entirelyconsistent for completed writes. Since they aren't consistent, thatpresumption is violated and the application's dataset (e.g., thedatabase) can quickly end up being corrupted.

One way to solve both of these problems is to allow for an offline pod,or perhaps a snapshot of an offline pod, to be copied to a new pod withnew volumes that have sufficiently new identities that host I/O driversand clustered applications won't confuse the copied volumes as being thesame as the still online volumes on another storage system. Since eachpod maintains a complete copy of the dataset, which is crash consistentbut perhaps slightly different from the copy of the pod dataset onanother storage system, and since each pod has an independent copy ofall data and metadata needed to operate on the pod content, it is astraightforward problem to make a virtual copy of some or all volumes orsnapshots in the pod to new volumes in a new pod. In a logical extentgraph implementation, for example, all that is needed is to define newvolumes in a new pod which reference logical extent graphs from thecopied pod associated with the pod's volumes or snapshots, and with thelogical extent graphs being marked as copy on write. The new volumesshould be treated as new volumes, similarly to how volume snapshotscopied to a new volume might be implemented. Volumes may have the sameadministrative name, though within a new pod namespace. But, they shouldhave different underlying identifiers, and differing logical unitidentifiers from the original volumes.

In some cases it may be possible to use virtual network isolationtechniques (for example, by creating a virtual LAN in the case of IPnetworks or a virtual SAN in the case of fiber channel networks) in sucha way that isolation of volumes presented to some interfaces can beassured to be inaccessible from host network interfaces or host SCSIinitiator ports that might also see the original volumes. In such cases,it may be safe to provide the copies of volumes with the same SCSI orother storage identifiers as the original volumes. This could be used,for example, in cases where the applications expect to see a particularset of storage identifiers in order to function without an undue burdenin reconfiguration.

Some of the techniques described herein could also be used outside of anactive fault context to test readiness for handling faults. Readinesstesting (sometimes referred to as “fire drills”) is commonly requiredfor disaster recovery configurations, where frequent and repeatedtesting is considered a necessity to ensure that most or all aspects ofa disaster recovery plan are correct and account for any recent changesto applications, datasets, or changes in equipment. Readiness testingshould be non-disruptive to current production operations, includingreplication. In many cases the real operations can't actually be invokedon the active configuration, but a good way to get close is to usestorage operations to make copies of production datasets, and thenperhaps couple that with the use of virtual networking, to create anisolated environment containing all data that is believed necessary forthe important applications that must be brought up successfully in casesof disasters. Making such a copy of a synchronously replicated (or evenan asynchronously replicated) dataset available within a site (orcollection of sites) that is expected to perform a disaster recoveryreadiness test procedure and then starting the important applications onthat dataset to ensure that it can startup and function is a great tool,since it helps ensure that no important parts of the applicationdatasets were left out in the disaster recovery plan. If necessary, andpractical, this could be coupled with virtual isolated networks coupledperhaps with isolated collection of physical or virtual machines, to getas close as possible to a real world disaster recovery takeoverscenario. Virtually copying a pod (or set of pods) to another pod as apoint-in-time image of the pod datasets immediately creates an isolateddataset that contains all the copied elements and that can then beoperated on essentially identically to the originally pods, as well asallowing isolation to a single site (or a few sites) separately from theoriginal pod. Further, these are fast operations and they can be torndown and repeated easily allowing testing to repeated as often as isdesired.

Some enhancements could be made to get further toward perfect disasterrecovery testing. For example, in conjunction with isolated networks,SCSI logical unit identities or other types of identities could becopied into the target pod so that the test servers, virtual machines,and applications see the same identities. Further, the administrativeenvironment of the servers could be configured to respond to requestsfrom a particular virtual set of virtual networks to respond to requestsand operations on the original pod name so scripts don't require use oftest-variants with alternate “test” versions of object names. A furtherenhancement can be used in cases where the host-side serverinfrastructure that will take over in the case of a disaster takeovercan be used during a test. This includes cases where a disaster recoverydata center is completely stocked with alternative server infrastructurethat won't generally be used until directed to do so by a disaster. Italso includes cases where that infrastructure might be used fornon-critical operations (for example, running analytics on productiondata, or simply supporting application development or other functionswhich may be important but can be halted if needed for more criticalfunctions). Specifically, host definitions and configurations and theserver infrastructure that will use them can be set up as they will befor an actual disaster recovery takeover event and tested as part ofdisaster recovery takeover testing, with the tested volumes beingconnected to these host definitions from the virtual pod copy used toprovide a snapshot of the dataset. From the standpoint of the storagesystems involved, then, these host definitions and configurations usedfor testing, and the volume-to-host connection configurations usedduring testing, can be reused when an actual disaster takeover event istriggered, greatly minimizing the configuration differences between thetest configuration and the real configuration that will be used in caseof a disaster recovery takeover.

In some cases it may make sense to move volumes out of a first pod andinto a new second pod including just those volumes. The pod membershipand high availability and recovery characteristics can then be adjustedseparately, and administration of the two resulting pod datasets canthen be isolated from each other. An operation that can be done in onedirection should also be possible in the other direction. At some point,it may make sense to take two pods and merge them into one so that thevolumes in each of the original two pods will now track each other forstorage system membership and high availability and recoverycharacteristics and events. Both operations can be accomplished safelyand with reasonably minimal or no disruption to running applications byrelying on the characteristics suggested for changing mediation orquorum properties for a pod which were discussed in an earlier section.With mediation, for example, a mediator for a pod can be changed using asequence consisting of a step where each storage system in a pod ischanged to depend on both a first mediator and a second mediator andeach is then changed to depend only on the second mediator. If a faultoccurs in the middle of the sequence, some storage systems may depend onboth the first mediator and the second mediator, but in no case willrecovery and fault handling result in some storage systems dependingonly on the first mediator and other storage systems only depending onthe second mediator. Quorum can be handled similarly by temporarilydepending on winning against both a first quorum model and a secondquorum model in order to proceed to recovery. This may result in a veryshort time period where availability of the pod in the face of faultsdepend on additional resources, thus reducing potential availability,but this time period is very short and the reduction in availability isoften very little. With mediation, if the change in mediator parametersis nothing more than the change in the key used for mediation and themediation service used is the same, then the potential reduction inavailability is even less, since it now depends only on two calls to thesame service versus one call to that service, and rather than separatecalls to two separate services.

Readers will note that changing the quorum model may be quite complex.An additional step may be necessary where storage systems willparticipate in the second quorum model but won't depend on winning inthat second quorum model, which is then followed by the step of alsodepending on the second quorum model. This may be necessary to accountfor the fact that if only one system has processed the change to dependon the quorum model, then it will never win quorum since there willnever be a majority. With this model in place for changing the highavailability parameters (mediation relationship, quorum model, takeoverpreferences), we can create a safe procedure for these operations tosplit a pod into two or to join two pods into one. This may requireadding one other capability: linking a second pod to a first pod forhigh availability such that if two pods include compatible highavailability parameters the second pod linked to the first pod candepend on the first pod for determining and instigating detach-relatedprocessing and operations, offline and in-sync states, and recovery andresynchronization actions.

To split a pod into two, which is an operation to move some volumes intoa newly created pod, a distributed operation may be formed that can bedescribed as: form a second pod into which we will move a set of volumeswhich were previously in a first pod, copy the high availabilityparameters from the first pod into the second pod to ensure they arecompatible for linking, and link the second pod to the first pod forhigh availability. This operation may be encoded as messages and shouldbe implemented by each storage system in the pod in such a way that thestorage system ensures that the operation happens completely on thatstorage system or does not happen at all if processing is interrupted bya fault. Once all in-sync storage systems for the two pods haveprocessed this operation, the storage systems can then process asubsequent operation which changes the second pod so that it is nolonger linked to the first pod. As with other changes to highavailability characteristics for a pod, this involves first having eachin-sync storage system change to rely on both the previous model (thatmodel being that high availability is linked to the first pod) and thenew model (that model being its own now independent high availability).In the case of mediation or quorum, this means that storage systemswhich processed this change will first depend on mediation or quorumbeing achieved as appropriate for the first pod and will additionallydepend on a new separate mediation (for example, a new mediation key) orquorum being achieved for the second pod before the second pod canproceed following a fault that required mediation or testing for quorum.As with the previous description of changing quorum models, anintermediate step may set storage systems to participate in quorum forthe second pod before the step where storage systems participate in anddepend on quorum for the second pod. Once all in-sync storage systemshave processed the change to depend on the new parameters for mediationor quorum for both the first pod and the second pod, the split iscomplete.

Joining a second pod into a first pod operates essentially in reverse.First, the second pod must be adjusted to be compatible with the firstpod, by having an identical list of storage systems and by having acompatible high availability model. This may involve some set of stepssuch as those described elsewhere in this paper to add or remove storagesystems or to change mediator and quorum models. Depending onimplementation, it may be necessary only to reach an identical list ofstorage systems. Joining proceeds by processing an operation on eachin-sync storage system to link the second pod to the first pod for highavailability. Each storage system which processes that operation willthen depend on the first pod for high availability and then the secondpod for high availability. Once all in-sync storage systems for thesecond pod have processed that operation, the storage systems will theneach process a subsequent operation to eliminate the link between thesecond pod and the first pod, migrate the volumes from the second podinto the first pod, and delete the second pod. Host or applicationdataset access can be preserved throughout these operations, as long asthe implementation allows proper direction of host or applicationdataset modification or read operations to the volume by identity and aslong as the identity is preserved as appropriate to the storage protocolor storage model (for example, as long as logical unit identifiers forvolumes and use of target ports for accessing volumes are preserved inthe case of SCSI).

Migrating a volume between pods may present issues. If the pods have anidentical set of in-sync membership storage systems, then it may bestraightforward: temporarily suspend operations on the volumes beingmigrated, switch control over operations on those volumes to controllingsoftware and structures for the new pod, and then resume operations.This allows for a seamless migration with continuous uptime forapplications apart from the very brief operation suspension, providednetwork and ports migrate properly between pods. Depending on theimplementation, suspending operations may not even be necessary, or maybe so internal to the system that the suspension of operations has noimpact. Copying volumes between pods with different in-sync membershipsets is more of a problem. If the target pod for the copy has a subsetof in-sync members from the source pod, this isn't much of a problem: amember storage system can be dropped safely enough without having to domore work. But, if the target pod adds in-sync member storage systems tothe volume over the source pod, then the added storage systems must besynchronized to include the volume's content before they can be used.Until synchronized, this leaves the copied volumes distinctly differentfrom the already synchronized volumes, in that fault handling differsand request handling from the not yet synced member storage systemseither won't work or must be forwarded or won't be as fast because readswill have to traverse an interconnect. Also, the internal implementationwill have to handle some volumes being in sync and ready for faulthandling and others not being in sync.

There are other problems relating to reliability of the operation in theface of faults. Coordinating a migration of volumes betweenmulti-storage-system pods is a distributed operation. If pods are theunit of fault handling and recovery, and if mediation or quorum orwhatever means are used to avoid split-brain situations, then a switchin volumes from one pod with a particular set of state andconfigurations and relationships for fault handling, recovery, mediationand quorum to another then storage systems in a pod have to be carefulabout coordinating changes related to that handling for any volumes.Operations can't be atomically distributed between storage systems, butmust be staged in some way. Mediation and quorum models essentiallyprovide pods with the tools for implementing distributed transactionalatomicity, but this may not extend to inter-pod operations withoutadding to the implementation.

Consider even a simple migration of a volume from a first pod to asecond pod even for two pods that share the same first and secondstorage systems. At some point the storage systems will coordinate todefine that the volume is now in the second pod and is no longer in thefirst pod. If there is no inherent mechanism for transactional atomicityacross the storage systems for the two pods, then a naive implementationcould leave the volume in the first pod on the first storage system andthe second pod on the second storage system at the time of a networkfault that results in fault handling to detach storage systems from thetwo pods. If pods separately determine which storage system succeeds indetaching the other, then the result could be that the same storagesystem detaches the other storage system for both pods, in which casethe result of the volume migration recovery should be consistent, or itcould result in a different storage system detaching the other for thetwo pods. If the first storage system detaches the second storage systemfor the first pod and the second storage system detaches the firststorage system for the second pod, then recovery might result in thevolume being recovered to the first pod on the first storage system andinto the second pod on the second storage system, with the volume thenrunning and exported to hosts and storage applications on both storagesystems. If instead the second storage system detaches the first storagesystem for the first pod and first storage detaches the second storagesystem for the second pod, then recovery might result in the volumebeing discarded from the second pod by the first storage system and thevolume being discarded from the first pod by the second storage system,resulting in the volume disappearing entirely. If the pods a volume isbeing migrated between are on differing sets of storage systems, thenthings can get even more complicated.

A solution to these problems may be to use an intermediate pod alongwith the techniques described previously for splitting and joining pods.This intermediate pod may never be presented as visible managed objectsassociated with the storage systems. In this model, volumes to be movedfrom a first pod to a second pod are first split from the first pod intoa new intermediate pod using the split operation described previously.The storage system members for the intermediate pod can then be adjustedto match the membership of storage systems by adding or removing storagesystems from the pod, as necessary. Subsequently, the intermediate podcan be joined with the second pod.

For further explanation, FIG. 4B sets forth diagrams of metadatarepresentations that may be implemented as a structured collection ofmetadata objects that, together, may represent a logical volume ofstorage data, or a portion of a logical volume, in accordance with someembodiments of the present disclosure. Metadata representations 451-50,451-54, and 451-60 may be stored within a storage system (451-06), andone or more metadata representations may be generated and maintained foreach of multiple storage objects, such as volumes, or portions ofvolumes, stored within a storage system (451-06).

While other types of structured collections of the metadata objects arepossible, in this example, metadata representations may be structured asa directed acyclic graph (DAG) of nodes, where, to maintain efficientaccess to any given node, the DAG may be structured and balancedaccording to various methods. For example, a DAG for a metadatarepresentation may be defined as a type of B-tree, and balancedaccordingly in response to changes to the structure of the metadatarepresentation, where changes to the metadata representation may occurin response to changes to, or additions to, underlying data representedby the metadata representation. While in this example, there are onlytwo levels for the sake of simplicity, in other examples, metadatarepresentations may span across multiple levels and may include hundredsor thousands of nodes, where each node may include any number of linksto other nodes.

Further, in this example, the leaves of a metadata representation mayinclude pointers to the stored data for a volume, or portion of avolume, where a logical address, or a volume and offset, may be used toidentify and navigate through the metadata representation to reach oneor more leaf nodes that reference stored data corresponding to thelogical address. For example, a volume (451-52) may be represented by ametadata representation (451-50), which includes multiple metadataobject nodes (451-52, 451-52A-451-52N), where leaf nodes(451-52A-451-52N) include pointers to respective data objects(451-53A-451-53N, 451-57). Data objects may be any size unit of datawithin a storage system (451-06). For example, data objects(451-53A-451-53N, 451-57) may each be a logical extent, where logicalextents may be some specified size, such as 1 MB, 4 MB, or some othersize.

In this example, a snapshot (451-56) may be created as a snapshot of astorage object, in this case, a volume (451-52), where at the point intime when the snapshot (451-56) is created, the metadata representation(451-54) for the snapshot (451-56) includes all of the metadata objectsfor the metadata representation (451-50) for the volume (451-52).Further, in response to creation of the snapshot (451-56), the metadatarepresentation (451-54) may be designated to be read only. However, thevolume (451-52) sharing the metadata representation may continue to bemodified, and while at the moment the snapshot is created, the metadatarepresentations for the volume (451-52) and the snapshot (451-56) areidentical, as modifications are made to data corresponding to the volume(451-52), and in response to the modifications, the metadatarepresentations for the volume (451-52) and the snapshot (451-56) maydiverge and become different.

For example, given a metadata representation (451-50) to represent avolume (451-52) and a metadata representation (451-54) to represent asnapshot (451-56), the storage system (451-06) may receive an I/Ooperation that writes to data that is ultimately stored within aparticular data object (451-53B), where the data object (451-53B) ispointed to by a leaf node pointer (451-52B), and where the leaf nodepointer (451-52B) is part of both metadata representations (451-50,451-54). In response to the write operation, the read only data objects(451-53A-451-53N) referred to by the metadata representation (451-54)remain unchanged, and the pointer (451-52B) may also remain unchanged.However, the metadata representation (451-50), which represents thecurrent volume (451-52), is modified to include a new data object tohold the data written by the write operation, where the modifiedmetadata representation is depicted as the metadata representation(451-60). Further, the write operation may be directed to only a portionof the data object (451-53B), and consequently, the new data object(451-57) may include a copy of previous contents of the data object(451-53B) in addition to the payload for the write operation.

In this example, as part of processing the write operation, the metadatarepresentation (451-60) for the volume (451-52) is modified to remove anexisting metadata object pointer (451-52B) and to include a new metadataobject pointer (451-58), where the new metadata object pointer (451-58)is configured to point to a new data object (451-57), where the new dataobject (451-57) stores the data written by the write operation. Further,the metadata representation (451-60) for the volume (451-52) continuesto include all metadata objects included within the previous metadatarepresentation (451-50)—with the exclusion of the metadata objectpointer (451-52B) that referenced the target data object, where themetadata object pointer (451-52B) continues to reference the read onlydata object (451-53B) that would have been overwritten.

In this way, using metadata representations, a volume or a portion of avolume may be considered to be snapshotted, or considered to be copied,by creating metadata objects, and without actual duplication of dataobjects—where the duplication of data objects may be deferred until awrite operation is directed at one of the read only data objectsreferred to by the metadata representations.

In other words, an advantage of using a metadata representation torepresent a volume is that a snapshot or a copy of a volume may becreated and be accessible in constant order time, and specifically, inthe time it takes to create a metadata object for the snapshot or copy,and to create a reference for the snapshot or copy metadata object tothe existing metadata representation for the volume being snapshotted orcopied.

As an example use, a virtualized copy-by-reference may make use of ametadata representation in a manner that is similar to the use of ametadata representation in creating a snapshot of a volume—where ametadata representation for a virtualized copy-by-reference may oftencorrespond to a portion of a metadata representation for an entirevolume. An example implementation of virtualized copy-by-reference maybe within the context of a virtualized storage system, where multipleblock ranges within and between volumes may reference a unified copy ofstored data. In such virtualized storage system, the metadata describedabove may be used to handle the relationship between virtual, orlogical, addresses and physical, or real, addresses—in other words, themetadata representation of stored data enables a virtualized storagesystem that may be considered flash-friendly in that it reduces, orminimizes, wear on flash memory.

In some examples, logical extents may be combined in various ways,including as simple collections or as logically related address rangeswithin some larger-scale logical extent that is formed as a set oflogical extent references. These larger combinations could also be givenlogical extent identities of various kinds, and could be furthercombined into still larger logical extents or collections. Acopy-on-write status could apply to various layers, and in various waysdepending on the implementation. For example, a copy on write statusapplied to a logical collection of logical collections of extents mightresult in a copied collection retaining references to unchanged logicalextents and the creation of copied-on-write logical extents (throughcopying references to any unchanged stored data blocks as needed) whenonly part of the copy-on-write logical collection is changed.

Deduplication, volume snapshots, or block range snapshots may beimplemented in this model through combinations of referencing storeddata blocks, or referencing logical extents, or marking logical extents(or identified collections of logical extents) as copy-on-write.

Further, with flash storage systems, stored data blocks may be organizedand grouped together in various ways as collections are written out intopages that are part of larger erase blocks. Eventual garbage collectionof deleted or replaced stored data blocks may involve moving contentstored in some number of pages elsewhere so that an entire erase blockcan be erased and prepared for reuse. This process of selecting physicalflash pages, eventually migrating and garbage collecting them, and thenerasing flash erase blocks for reuse may or may not be coordinated,driven by, or performed by the aspect of a storage system that is alsohandling logical extents, deduplication, compression, snapshots, virtualcopying, or other storage system functions. A coordinated or drivenprocess for selecting pages, migrating pages, garbage collecting anderasing erase blocks may further take into account variouscharacteristics of the flash memory device cells, pages, and eraseblocks such as number of uses, aging predictions, adjustments to voltagelevels or numbers of retries needed in the past to recover stored data.They may also take into account analysis and predictions across allflash memory devices within the storage system.

To continue with this example, where a storage system may be implementedbased on directed acyclic graphs comprising logical extents, logicalextents can be categorized into two types: leaf logical extents, whichreference some amount of stored data in some way, and composite logicalextents, which reference other leaf or composite logical extents.

A leaf extent can reference data in a variety of ways. It can pointdirectly to a single range of stored data (e.g., 64 kilobytes of data),or it can be a collection of references to stored data (e.g., a 1megabyte “range” of content that maps some number of virtual blocksassociated with the range to physically stored blocks). In the lattercase, these blocks may be referenced using some identity, and someblocks within the range of the extent may not be mapped to anything.Also, in that latter case, these block references need not be unique,allowing multiple mappings from virtual blocks within some number oflogical extents within and across some number of volumes to map to thesame physically stored blocks. Instead of stored block references, alogical extent could encode simple patterns: for example, a block whichis a string of identical bytes could simply encode that the block is arepeated pattern of identical bytes.

A composite logical extent can be a logical range of content with somevirtual size, which comprises a plurality of maps that each map from asubrange of the composite logical extent logical range of content to anunderlying leaf or composite logical extent. Transforming a requestrelated to content for a composite logical extent, then, involves takingthe content range for the request within the context of the compositelogical extent, determining which underlying leaf or composite logicalextents that request maps to, and transforming the request to apply toan appropriate range of content within those underlying leaf orcomposite logical extents.

Volumes, or files or other types of storage objects, can be described ascomposite logical extents. Thus, these presented storage objects can beorganized using this extent model.

Depending on implementation, leaf or composite logical extents could bereferenced from a plurality of other composite logical extents,effectively allowing inexpensive duplication of larger collections ofcontent within and across volumes. Thus, logical extents can be arrangedessentially within an acyclic graph of references, each ending in leaflogical extents. This can be used to make copies of volumes, to makesnapshots of volumes, or as part of supporting virtual range copieswithin and between volumes as part of EXTENDED COPY or similar types ofoperations.

An implementation may provide each logical extent with an identity whichcan be used to name it. This simplifies referencing, since thereferences within composite logical extents become lists comprisinglogical extent identities and a logical subrange corresponding to eachsuch logical extent identity. Within logical extents, each stored datablock reference may also be based on some identity used to name it.

To support these duplicated uses of extents, we can add a furthercapability: copy-on-write logical extents. When a modifying operationaffects a copy-on-write leaf or composite logical extent the logicalextent is copied, with the copy being a new reference and possiblyhaving a new identity (depending on implementation). The copy retainsall references or identities related to underlying leaf or compositelogical extents, but with whatever modifications result from themodifying operation. For example, a WRITE, WRITE SAME, XDWRITEREAD,XPWRITE, or COMPARE AND WRITE request may store new blocks in thestorage system (or use deduplication techniques to identify existingstored blocks), resulting in modifying the corresponding leaf logicalextents to reference or store identities to a new set of blocks,possibly replacing references and stored identities for a previous setof blocks. Alternately, an UNMAP request may modify a leaf logicalextent to remove one or more block references. In both types of cases, aleaf logical extent is modified. If the leaf logical extent iscopy-on-write, then a new leaf logical extent will be created that isformed by copying unaffected block references from the old extent andthen replacing or removing block references based on the modifyingoperation.

A composite logical extent that was used to locate the leaf logicalextent may then be modified to store the new leaf logical extentreference or identity associated with the copied and modified leaflogical extent as a replacement for the previous leaf logical extent. Ifthat composite logical extent is copy-on-write, then a new compositelogical extent is created as a new reference or with a new identity, andany unaffected references or identities to its underlying logicalextents are copied to that new composite logical extent, with theprevious leaf logical extent reference or identity being replaced withthe new leaf logical extent reference or identity.

This process continues further backward from referenced extent toreferencing composite extent, based on the search path through theacyclic graph used to process the modifying operation, with allcopy-on-write logical extents being copied, modified, and replaced.

These copied leaf and composite logical extents can then drop thecharacteristic of being copy on write, so that further modifications donot result in an additional copy. For example, the first time someunderlying logical extent within a copy-on-write “parent” compositeextent is modified, that underlying logical extent may be copied andmodified, with the copy having a new identity which is then written intoa copied and replaced instance of the parent composite logical extent.However, a second time some other underlying logical extent is copiedand modified and with that other underlying logical extent copy's newidentity being written to the parent composite logical extent, theparent can then be modified in place with no further copy and replacenecessary on behalf of references to the parent composite logicalextent.

Modifying operations to new regions of a volume or of a compositelogical extent for which there is no current leaf logical extent maycreate a new leaf logical extent to store the results of thosemodifications. If that new logical extent is to be referenced from anexisting copy-on-write composite logical extent, then that existingcopy-on-write composite logical extent will be modified to reference thenew logical extent, resulting in another copy, modify, and replacesequence of operations similar to the sequence for modifying an existingleaf logical extent.

If a parent composite logical extent cannot be grown large enough (basedon implementation) to cover an address range associated that includesnew leaf logical extents to create for a new modifying operation, thenthe parent composite logical extent may be copied into two or more newcomposite logical extents which are then referenced from a single“grandparent” composite logical extent which yet again is a newreference or a new identity. If that grandparent logical extent isitself found through another composite logical extent that iscopy-on-write, then that another composite logical extent will be copiedand modified and replaced in a similar way as described in previousparagraphs. This copy-on-write model can be used as part of implementingsnapshots, volume copies, and virtual volume address range copies withina storage system implementation based on these directed acyclic graphsof logical extents. To make a snapshot as a read-only copy of anotherwise writable volume, a graph of logical extents associated withthe volume is marked copy-on-write and a reference to the originalcomposite logical extents are retained by the snapshot. Modifyingoperations to the volume will then make logical extent copies as needed,resulting in the volume storing the results of those modifyingoperations and the snapshots retaining the original content. Volumecopies are similar, except that both the original volume and the copiedvolume can modify content resulting in their own copied logical extentgraphs and subgraphs.

Virtual volume address range copies can operate either by copying blockreferences within and between leaf logical extents (which does notitself involve using copy-on-write techniques unless changes to blockreferences modifies copy-on-write leaf logical extents). Alternately,virtual volume address range copies can duplicate references to leaf orcomposite logical extents, which works well for volume address rangecopies of larger address ranges. Further, this allows graphs to becomedirected acyclic graphs of references rather than merely referencetrees. Copy-on-write techniques associated with duplicated logicalextent references can be used to ensure that modifying operations to thesource or target of a virtual address range copy will result in thecreation of new logical extents to store those modifications withoutaffecting the target or the source that share the same logical extentimmediately after the volume address range copy operation.

Input/output operations for pods may also be implemented based onreplicating directed acyclic graphs of logical extents. For example,each storage system within a pod could implement private graphs oflogical extents, such that the graphs on one storage system for a podhave no particular relationship to the graphs on any second storagesystem for the pod. However, there is value in synchronizing the graphsbetween storage systems in a pod. This can be useful forresynchronization and for coordinating features such as asynchronous orsnapshot based replication to remote storage systems. Further, it may beuseful for reducing some overhead for handling the distribution ofsnapshot and copy related processing. In such a model, keeping thecontent of a pod in sync across all in-sync storage systems for a pod isessentially the same as keeping graphs of leaf and composite logicalextents in sync for all volumes across all in-sync storage systems forthe pod, and ensuring that the content of all logical extents isin-sync. To be in sync, matching leaf and composite logical extentsshould either have the same identity or should have mappable identities.Mapping could involve some set of intermediate mapping tables or couldinvolve some other type of identity translation. In some cases,identities of blocks mapped by leaf logical extents could also be keptin sync.

In a pod implementation based on a leader and followers, with a singleleader for each pod, the leader can be in charge of determining anychanges to the logical extent graphs. If a new leaf or composite logicalextent is to be created, it can be given an identity. If an existingleaf or composite logical extent is to be copied to form a new logicalextent with modifications, the new logical extent can be described as acopy of a previous logical extent with some set of modifications. If anexisting logical extent is to be split, the split can be described alongwith the new resulting identities. If a logical extent is to bereferenced as an underlying logical extent from some additionalcomposite logical extent, that reference can be described as a change tothe composite logical extent to reference that underlying logicalextent.

Modifying operations in a pod thus comprises distributing descriptionsof modifications to logical extent graphs (where new logical extents arecreated to extend content or where logical extents are copied, modified,and replaced to handle copy-on-write states related to snapshots, volumecopies, and volume address range copies) and distributing descriptionsand content for modifications to the content of leaf logical extents. Anadditional benefit that comes from using metadata in the form ofdirected acyclic graphs, as described above, is that I/O operations thatmodify stored data in physical storage may be given effect at a userlevel through the modification of metadata corresponding to the storeddata in physical storage—without modifying the stored data in physicalstorage. In the disclosed embodiments of storage systems, where thephysical storage may be a solid state drive, the wear that accompaniesmodifications to flash memory may be avoided or reduced due to I/Ooperations being given effect through the modifications of the metadatarepresenting the data targeted by the I/O operations instead of throughthe reading, erasing, or writing of flash memory. Further, as notedabove, in such a virtualized storage system, the metadata describedabove may be used to handle the relationship between virtual, orlogical, addresses and physical, or real, addresses—in other words, themetadata representation of stored data enables a virtualized storagesystem that may be considered flash-friendly in that it reduces, orminimizes, wear on flash memory.

Leader storage systems may perform their own local operations toimplement these descriptions in the context of their local copy of thepod dataset and the local storage system's metadata. Further, thein-sync followers perform their own separate local operations toimplement these descriptions in the context of their separate local copyof the pod dataset and their separate local storage system's metadata.When both leader and follower operations are complete, the result iscompatible graphs of logical extents with compatible leaf logical extentcontent. These graphs of logical extents then become a type of “commonmetadata” as described in previous examples. This common metadata can bedescribed as dependencies between modifying operations and requiredcommon metadata. Transformations to graphs can be described as separateoperations within a set of or more predicates that may describerelationships, such as dependencies, with one or more other operations.In other words, interdependencies between operations may be described asa set of precursors that one operation depends on in some way, where theset of precursors may be considered predicates that must be true for anoperation to complete. A fuller description of predicates may be foundwithin application Ser. No. 15/696,418, which is included herein byreference in its entirety. Alternately, each modifying operation thatrelies on a particular same graph transformation that has not yet beenknown to complete across the pod can include the parts of any graphtransformation that it relies on. Processing an operation descriptionthat identifies a “new” leaf or composite logical extent that alreadyexists can avoid creating the new logical extent since that part wasalready handled in the processing of some earlier operation, and caninstead implement only the parts of the operation processing that changethe content of leaf or composite logical extents. It is a role of theleader to ensure that transformations are compatible with each other.For example, we can start with two writes come that come in for a pod. Afirst write replaces a composite logical extent A with a copy of formedas composite logical extent B, replaces a leaf logical extent C with acopy as leaf logical extent D and with modifications to store thecontent for the second write, and further writes leaf logical extent Dinto composite logical extent B. Meanwhile, a second write implies thesame copy and replacement of composite logical extent A with compositelogical extent B but copies and replaces a different leaf logical extentE with a logical extent F which is modified to store the content of thesecond write, and further writes logical extent F into logical extent B.In that case, the description for the first write can include thereplacement of A with B and C with D and the writing of D into compositelogical extent B and the writing of the content of the first write intoleaf extend B; and, the description of the second write can include thereplacement of A with B and E with F and the writing of F into compositelogical extent B, along with the content of the second write which willbe written to leaf extent F. A leader or any follower can thenseparately process the first write or the second write in any order, andthe end result is B copying and replacing A, D copying and replacing C,F copying replacing E, and D and F being written into composite logicalextent B. A second copy of A to form B can be avoided by recognizingthat B already exists. In this way, a leader can ensure that the podmaintains compatible common metadata for a logical extent graph acrossin-sync storage systems for a pod.

Given an implementation of storage systems using directed acyclic graphsof logical extents, recovery of pods based on replicated directedacyclic graphs of logical extents may be implemented. Specifically, inthis example, recovery in pods may be based on replicated extent graphsthen involves recovering consistency of these graphs as well asrecovering content of leaf logical extents. In this implementation ofrecovery, operations may include querying for graph transformations thatare not known to have completed on all in-sync storage systems for apod, as well as all leaf logical extent content modifications that arenot known to have completed across all storage systems for the pod. Suchquerying could be based on operations since some coordinated checkpoint,or could simply be operations not known to have completed where eachstorage system keeps a list of operations during normal operation thathave not yet been signaled as completed. In this example, graphtransformations are straightforward: a graph transformation may createnew things, copy old things to new things, and copy old things into twoor more split new things, or they modify composite extents to modifytheir references to other extents. Any stored operation descriptionfound on any in-sync storage system that creates or replaces any logicalextent can be copied and performed on any other storage system that doesnot yet have that logical extent. Operations that describe modificationsto leaf or composite logical extents can apply those modifications toany in-sync storage system that had not yet applied them, as long as theinvolved leaf or composite logical extents have been recovered properly.

In another example, as an alternative to using a logical extent graph,storage may be implemented based on a replicated content-addressablestore. In a content-addressable store, for each block of data (forexample, every 512 bytes, 4096 bytes, 8192 bytes or even 16384 bytes) aunique hash value (sometimes also called a fingerprint) is calculated,based on the block content, so that a volume or an extent range of avolume can be described as a list of references to blocks that have aparticular hash value. In a synchronously replicated storage systemimplementation based on references to blocks with the same hash value,replication could involve a first storage system receiving blocks,calculating fingerprints for those blocks, identifying block referencesfor those fingerprints, and delivering changes to one or a plurality ofadditional storage systems as updates to the mapping of volume blocks toreferenced blocks. If a block is found to have already been stored bythe first storage system, that storage system can use its reference toname the reference in each of the additional storage systems (eitherbecause the reference uses the same hash value or because an identifierfor the reference is either identical or can be mapped readily).Alternately, if a block is not found by the first storage system, thencontent of the first storage system may be delivered to other storagesystems as part of the operation description along with the hash valueor identity associated with that block content. Further, each in-syncstorage system's volume descriptions are then updated with the new blockreferences. Recovery in such a store may then include comparing recentlyupdated block references for a volume. If block references differbetween different in-sync storage systems for a pod, then one version ofeach reference can be copied to other storage systems to make themconsistent. If the block reference on one system does not exist, then itbe copied from some storage system that does store a block for thatreference. Virtual copy operations can be supported in such a block orhash reference store by copying the references as part of implementingthe virtual copy operation.

For further explanation, FIG. 5A sets forth a flow chart illustratingsteps that may be performed by storage systems (5-402, 5-404, 5-406)that support a pod according to some embodiments of the presentdisclosure. Although depicted in less detail, the storage systems(5-402, 5-404, 5-406) depicted in FIG. 5A may be similar to the storagesystems described above, or any combination thereof. In fact, thestorage systems (5-402, 5-404, 5-406) depicted in FIG. 5A may includethe same, fewer, additional components as the storage systems describedabove.

In the example method depicted in FIG. 5A, a storage system (5-402) mayattach (5-508) to a pod. The model for pod membership may include a listof storage systems and a subset of that list where storage systems arepresumed to be in-sync for the pod. A storage system is in-sync for apod if it is at least within a recovery of having identical idle contentfor the last written copy of the dataset associated with the pod. Idlecontent is the content after any in-progress modifications havecompleted with no processing of new modifications. Sometimes this isreferred to as “crash recoverable” consistency. Storage systems that arelisted as pod members but that are not listed as in-sync for the pod canbe described as “detached” from the pod. Storage systems that are listedas pod members, are in-sync for the pod, and are currently available foractively serving data for the pod are “online” for the pod.

In the example method depicted in FIG. 5A, the storage system (5-402)may attach (5-508) to a pod, for example, by synchronizing its locallystored version of the dataset (5-426) along with an up-to-date versionof the dataset (5-426) that is stored on other storage systems (5-404,5-406) in the pod that are online, as the term is described above. Insuch an example, in order for the storage system (5-402) to attach(5-508) to the pod, a pod definition stored locally within each of thestorage systems (5-402, 5-404, 5-406) in the pod may need to be updatedin order for the storage system (5-402) to attach (5-508) to the pod. Insuch an example, each storage system member of a pod may have its owncopy of the membership, including which storage systems it last knewwere in-sync, and which storage systems it last knew comprised theentire set of pod members.

In the example method depicted in FIG. 5A, the storage system (5-402)may also receive (5-510) a request to read a portion of the dataset(5-426) and the storage system (5-402) may process (5-512) the requestto read the portion of the dataset (5-426) locally. Readers willappreciate that although requests to modify (e.g., a write operation)the dataset (5-426) require coordination between the storage systems(5-402, 5-404, 5-406) in a pod, as the dataset (5-426) should beconsistent across all storage systems (5-402, 5-404, 5-406) in a pod,responding to a request to read a portion of the dataset (5-426) doesnot require similar coordination between the storage systems (5-402,5-404, 5-406). As such, a particular storage system (5-402) thatreceives a read request may service the read request locally by readinga portion of the dataset (5-426) that is stored within the storagesystem's (5-402) storage devices, with no synchronous communication withother storage systems (5-404, 5-406) in the pod. Read requests receivedby one storage system for a replicated dataset in a replicated clusterare expected to avoid any communication in the vast majority of cases,at least when received by a storage system that is running within acluster that is also running nominally. Such reads should normally beprocessed simply by reading from the local copy of a clustered datasetwith no further interaction required with other storage systems in thecluster

Readers will appreciate that the storage systems may take steps toensure read consistency such that a read request will return the sameresult regardless of which storage system processes the read request.For example, the resulting clustered dataset content for any set ofupdates received by any set of storage systems in the cluster should beconsistent across the cluster, at least at any time updates are idle(all previous modifying operations have been indicated as complete andno new update requests have been received and processed in any way).More specifically, the instances of a clustered dataset across a set ofstorage systems can differ only as a result of updates that have not yetcompleted. This means, for example, that any two write requests whichoverlap in their volume block range, or any combination of a writerequest and an overlapping snapshot, compare-and-write, or virtual blockrange copy, must yield a consistent result on all copies of the dataset.Two operations cannot yield a result as if they happened in one order onone storage system and a different order on another storage system inthe replicated cluster.

Furthermore, read requests may be time order consistent. For example, ifone read request is received on a replicated cluster and completed andthat read is then followed by another read request to an overlappingaddress range which is received by the replicated cluster and where oneor both reads in any way overlap in time and volume address range with amodification request received by the replicated cluster (whether any ofthe reads or the modification are received by the same storage system ora different storage system in the replicated cluster), then if the firstread reflects the result of the update then the second read should alsoreflect the results of that update, rather than possibly returning datathat preceded the update. If the first read does not reflect the update,then the second read can either reflect the update or not. This ensuresthat between two read requests “time” for a data segment cannot rollbackward.

In the example method depicted in FIG. 5A, the storage system (5-402)may also detect (5-514) a disruption in data communications with one ormore of the other storage systems (5-404, 5-406). A disruption in datacommunications with one or more of the other storage systems (5-404,5-406) may occur for a variety of reasons. For example, a disruption indata communications with one or more of the other storage systems(5-404, 5-406) may occur because one of the storage systems (5-402,5-404, 5-406) has failed, because a network interconnect has failed, orfor some other reason. An important aspect of synchronous replicatedclustering is ensuring that any fault handling doesn't result inunrecoverable inconsistencies, or any inconsistency in responses. Forexample, if a network fails between two storage systems, at most one ofthe storage systems can continue processing newly incoming I/O requestsfor a pod. And, if one storage system continues processing, the otherstorage system can't process any new requests to completion, includingread requests.

In the example method depicted in FIG. 5A, the storage system (5-402)may also determine (5-516) whether to the particular storage system(5-402) should remain online as part of the pod. As mentioned above, tobe ‘online’ as part of a pod, a storage system must consider itself tobe in-sync for the pod and must be communicating with all other storagesystems it considers to be in-sync for the pod. If a storage systemcan't be certain that it is in-sync and communicating with all otherstorage systems that are in-sync, then it may stop processing newincoming requests to access the dataset (5-426). As such, the storagesystem (5-402) may determine (5-516) whether to the particular storagesystem (5-402) should remain online as part of the pod, for example, bydetermining whether it can communicate with all other storage systems(5-404, 5-406) it considers to be in-sync for the pod (e.g., via one ormore test messages), by determining whether the all other storagesystems (5-404, 5-406) it considers to be in-sync for the pod alsoconsider the storage system (5-402) to be attached to the pod, through acombination of both steps where the particular storage system (5-402)must confirm that it can communicate with all other storage systems(5-404, 5-406) it considers to be in-sync for the pod and that all otherstorage systems (5-404, 5-406) it considers to be in-sync for the podalso consider the storage system (5-402) to be attached to the pod, orthrough some other mechanism.

In the example method depicted in FIG. 5A, the storage system (5-402)may also, responsive to affirmatively (5-518) determining that theparticular storage system (5-402) should remain online as part of thepod, keep (5-522) the dataset (5-426) on the particular storage system(5-402) accessible for management and dataset operations. The storagesystem (5-402) may keep (5-522) the dataset (5-426) on the particularstorage system (5-402) accessible for management and dataset operations,for example, by accepting requests to access the version of the dataset(5-426) that is stored on the storage system (5-402) and processing suchrequests, by accepting and processing management operations associatedwith the dataset (5-426) that are issued by a host or authorizedadministrator, by accepting and processing management operationsassociated with the dataset (5-426) that are issued by one of the otherstorage systems (5-404, 5-406) in the pod, or in some other way.

In the example method depicted in FIG. 5A, the storage system (5-402)may also, responsive to determining that the particular storage systemshould not (5-520) remain online as part of the pod, make (5-524) thedataset (5-426) on the particular storage system (5-402) inaccessiblefor management and dataset operations. The storage system (5-402) maymake (5-524) the dataset (5-426) on the particular storage system(5-402) inaccessible for management and dataset operations, for example,by rejecting requests to access the version of the dataset (5-426) thatis stored on the storage system (5-402), by rejecting managementoperations associated with the dataset (5-426) that are issued by a hostor other authorized administrator, by rejecting management operationsassociated with the dataset (5-426) that are issued by one of the otherstorage systems (5-404, 5-406) in the pod, or in some other way.

In the example method depicted in FIG. 5A, the storage system (5-402)may also detect (5-526) that the disruption in data communications withone or more of the other storage systems (5-404, 5-406) has beenrepaired. The storage system (5-402) may detect (5-526) that thedisruption in data communications with one or more of the other storagesystems (5-404, 5-406) has been repaired, for example, by receiving amessage from the one or more of the other storage systems (5-404,5-406). In response to detecting (5-526) that the disruption in datacommunications with one or more of the other storage systems (5-404,5-406) has been repaired, the storage system (5-402) may make (5-528)the dataset (5-426) on the particular storage system (5-402) accessiblefor management and dataset operations.

Readers will appreciate that the example depicted in FIG. 5A describesan embodiment in which various actions are depicted as occurring withinsome order, although no ordering is required. Furthermore, otherembodiments may exist where the storage system (5-402) only carries outa subset of the described actions. For example, the storage system(5-402) may perform the steps of detecting (5-514) a disruption in datacommunications with one or more of the other storage systems (5-404,5-406), determining (5-516) whether to the particular storage system(5-402) should remain in the pod, keeping (5-522) the dataset (5-426) onthe particular storage system (5-402) accessible for management anddataset operations or making (5-524) the dataset (5-426) on theparticular storage system (5-402) inaccessible for management anddataset operations without first receiving (5-510) a request to read aportion of the dataset (5-426) and processing (5-512) the request toread the portion of the dataset (5-426) locally. Furthermore, thestorage system (5-402) may detect (5-526) that the disruption in datacommunications with one or more of the other storage systems (5-404,5-406) has been repaired and make (5-528) the dataset (5-426) on theparticular storage system (5-402) accessible for management and datasetoperations without first receiving (5-510) a request to read a portionof the dataset (5-426) and processing (5-512) the request to read theportion of the dataset (5-426) locally. In fact, none of the stepsdescribed herein are explicitly required in all embodiments asprerequisites for performing other steps described herein.

For further explanation, FIG. 5B sets forth a flow chart illustratingsteps that may be performed by storage systems (5-402, 5-404, 5-406)that support a pod according to some embodiments of the presentdisclosure. Although depicted in less detail, the storage systems(5-402. 5-404, 5-406) depicted in FIG. 5B may be similar to the storagesystems described above with reference to FIGS. 1A-1D, FIGS. 2A-2G,FIGS. 3A-3B, FIG. 6A or 6B, or any combination thereof. In fact, thestorage systems (5-402, 5-404, 5-406) depicted in FIG. 5B may includethe same, fewer, additional components as the storage systems describedabove.

In the example method depicted in FIG. 5B, two or more of the storagesystems (5-402, 5-404) may each identify (5-608) a target storage system(5-618) for asynchronously receiving the dataset (5-426). The targetstorage system (5-618) for asynchronously receiving the dataset (5-426)may be embodied, for example, as a backup storage system that is locatedin a different data center than either of the storage systems (5-402,5-404) that are members of a particular pod, as cloud storage that isprovided by a cloud services provider, or in many other ways. Readerswill appreciate that the target storage system (5-618) is not one of theplurality of storage systems (5-402, 5-404) across which the dataset(5-426) is synchronously replicated, and as such, the target storagesystem (5-618) initially does not include an up-to-date local copy ofthe dataset (5-426).

In the example method depicted in FIG. 5B, two or more of the storagesystems (5-402, 5-404) may each also identify (5-610) a portion of thedataset (5-426) that is not being asynchronously replicated to thetarget storage (5-618) system by any of the other storages systems thatare members of a pod that includes the dataset (5-426). In such anexample, the storage systems (5-402, 5-404) may each asynchronouslyreplicate (5-612), to the target storage system (5-618), the portion ofthe dataset (5-426) that is not being asynchronously replicated to thetarget storage system by any of the other storages systems. Consider anexample in which a first storage system (5-402) is responsible forasynchronously replicating a first portion (e.g., a first half of anaddress space) of the dataset (5-426) to the target storage system(5-618). In such an example, the second storage system (5-404) would beresponsible for asynchronously replicating a second portion (e.g., asecond half of an address space) of the dataset (5-426) to the targetstorage system (5-618), such that the two or more storage systems(5-402, 5-404) collectively replicate the entire dataset (5-426) to thetarget storage system (5-618).

Readers will appreciate that through the use of pods, as describedabove, the replication relationship between two storage systems may beswitched from a relationship where data is asynchronously replicated toa relationship where data is synchronously replicated. For example, ifstorage system A is configured to asynchronously replicate a dataset tostorage system B, creating a pod that includes the dataset, storagesystem A as a member, and storage system B as a member can switch therelationship where data is asynchronously replicated to a relationshipwhere data is synchronously replicated. Likewise, through the use ofpods, the replication relationship between two storage systems may beswitched from a relationship where data is synchronously replicated to arelationship where data is asynchronously replicated. For example, if apod is created that includes the dataset, storage system A as a member,and storage system B as a member, by merely unstretching the pod (toremove storage system A as a member or to remove storage system B as amember), a relationship where data is synchronously replicated betweenthe storage systems can immediately be switched to a relationship wheredata is asynchronously replicated. In such a way, storage systems mayswitch back-and-forth as needed between asynchronous replication andsynchronous replication.

This switching can be facilitated by the implementation relying onsimilar techniques for both synchronous and asynchronous replication.For example, if resynchronization for a synchronously replicated datasetrelies on the same or a compatible mechanism as is used for asynchronousreplication, then switching to asynchronous replication is conceptuallyidentical to dropping the in-sync state and leaving a relationship in astate similar to a “perpetual recovery” mode. Likewise, switching fromasynchronous replication to synchronous replication can operateconceptually by “catching up” and becoming in-sync just as is done whencompleting a resynchronization with the switching system becoming anin-sync pod member.

Alternatively, or additionally, if both synchronous and asynchronousreplication rely on similar or identical common metadata, or a commonmodel for representing and identifying logical extents or stored blockidentities, or a common model for representing content-addressablestored blocks, then these aspects of commonality can be leveraged todramatically reduce the content that may need to be transferred whenswitching to and from synchronous and asynchronous replication. Further,if a dataset is asynchronously replicated from a storage system A to astorage system B, and system B further asynchronously replicates thatdata set to a storage system C, then a common metadata model, commonlogical extent or block identities, or common representation ofcontent-addressable stored blocks, can dramatically reduce the datatransfers needed to enable synchronous replication between storagesystem A and storage system C.

Readers will further appreciate that that through the use of pods, asdescribed above, replication techniques may be used to perform tasksother than replicating data. In fact, because a pod may include a set ofmanaged objects, tasks like migrating a virtual machine may be carriedout using pods and the replication techniques described herein. Forexample, if virtual machine A is executing on storage system A, bycreating a pod that includes virtual machine A as a managed object,storage system A as a member, and storage system B as a member, virtualmachine A and any associated images and definitions may be migrated tostorage system B, at which time the pod could simply be destroyed,membership could be updated, or other actions may be taken as necessary.

For further explanation FIG. 6 illustrates a configurable replicationsystem that provides continuous replication with minimal batching and anadjustable recovery point objective. In contrast to the example storagesystems described above, which describes use of pods in implementingsynchronous replication, in this example, pods are used forasynchronous, or near-synchronous replication.

However, as described further below, while replication may beasynchronous, efficient use of lightweight journals, also referred to asmetadata logs, allows for a short, typical recovery point (the timedifference between last update on a source data repository and the clockvalue of the source data repository associated with the latestconsistent dataset available at a target data repository) that can be onthe order of a few to 50 or 100 milliseconds, or a short intrinsic orconfigured recovery point objective (RPO), where in some cases, the RPOmay be on the order of a few tens of milliseconds up to some specifiednumber of minutes. In some examples, the RPO limit may be more of afunction of a typical maximum transfer time. As an illustrativescenario, the earth's moon is a little over one light-second away fromthe earth, so with sufficient bandwidth to avoid queue delay, an RPO tothe moon of 1.2 seconds is possible with a lightweight journalimplementation (receiving an acknowledgement from the moon for theprimary to confirm the recovery point will take at least another 1.2seconds).

In some implementations, the configurable replication system providesfor disaster recovery from a failure at a source data repository basedon a target data repository being able to provide read and write accesswith a consistent version of the source data repository in response tothe failure of the source data repository. As an example, consider a setof clock values associated with an original dataset that is beingupdated, where a source time represents a clock value for the sourcedataset, and includes all updates which were signaled as completed onthe original dataset prior to that time and excludes all updates whichwere received to be processed against the dataset after that time. Inthis example, any updates which were received to be processed againstthe dataset at the source time but had not yet been signaled ascompleted can in general be arbitrarily included or excluded barring anytransactional interdependencies.

Further, a snapshot may represent one such source time for a dataset,and where rolling lightweight checkpoints may represent a sequence ofdataset source times. In near-sync replication, checkpoints may beapplied as they come in or when they are completely ready to be applied.As a result, in some examples, a tracking dataset always represents somereplicated source time clock value which is generally some amount behindthe live dataset's source time clock value. In this example, thedifference between the replicated dataset source time clock value andthe live dataset source time clock value may be reported as the currentavailable “recovery point”—the distance between the replicated datasetsource time clock value and the live dataset source time clock (thoughpropagation delays likely mean that neither source nor target knowexactly what this time distance is).

In some implementations, the lightweight journals may be a basis forimplementing continuous data protection—with or without anyimplementation of data replication. In some examples, continuous dataprotection provides relatively fine-grained versioning of a dataset forextended periods of time, to allow roll-back or other access to any ofthose fine-grained versions. For example, these versions can be examinedto determine when some update or corruption occurred, allowing aroll-back or other access (such as the formation of a usable snapshot orclone) to the version immediately prior to that update. In some cases,it makes sense to provide access to both the pre-change/pre-corruptiondataset as well as the more recent data (or even a set of points-in-timeof the dataset before or since the time of the update/corruption) sothat other changes can be copied or otherwise reconciled, or fordiagnostic purposes.

Further, continuing with this example, in continuous data protection,checkpoints of a dataset may be replayed up to some limit in order toconstruct a consistent image. In some cases, such checkpoints may betransformed into a read-only snapshot, or the dataset may also be cloned(or the read-only snapshot may be cloned) to form a read-write volumethat may be used for various purposes. In this example, animplementation of continuous data protection may clone a volume to matchsome point in time, test it to determine whether the volume includes orexcludes some data or some corruption, and then if needed re-clone thevolume to match some other point in time and test the volume again. Inthis example, when a point-in-time is determined, that point-in-time maybe used as a basis to generate a primary volume or simply copy data outof the volume at that point-in-time.

Further still, in some implementations, continuous data protection mayprovide more granular access to these named source time clock valuesfrom the source dataset, with granularity limited to the granularity ofcheckpoints. In some cases, continuous data protection could be eitherlocal (the checkpoints are retained on a local storage system and areavailable for local access), or they can be on a replication target (thecheckpoints are retained on a replication target), or both, with eachpossibly having different retention periods and models for mergingcheckpoints or converting them to long-duration snapshots.

In some implementations, a ‘pod’, as the term is used here andthroughout the present application, may be embodied as a managemententity that represents a dataset, a set of managed objects andmanagement operations, a set of access operations to modify or read thedataset, and a plurality of storage systems. Such management operationsmay modify or query managed objects through a storage system with properaccess. Each storage system may store a separate copy of the dataset asa proper subset of the datasets stored and advertised for use by thestorage system, where operations to modify managed objects or thedataset performed and completed through any one storage system arereflected in subsequent management objects to query the pod orsubsequent access operations to read the dataset.

In some implementations, a replication relationship is formed as a setof storage systems 602, 624 that replicate some dataset 612 betweenindependent stores, where each storage system 602, 624 may have its owncopy and its own separate internal management of relevant datastructures for defining storage objects, for mapping objects to physicalstorage, for deduplication, for defining the mapping of content tosnapshots, and so on. In this way, a replication system may use a commonmanagement model that is a same, or similar, management model, and use asame, or similar, implementation model and persistent data structuresfor both synchronous replication and asynchronous replication.

As illustrated, a source data repository 602 receives storage systemoperations 652 and may communicate with a target data repository 624 togenerate replica data. In this example, the source data repository 602may be similar to computing device 350 or similar to a storage system100, 306, 318, as described above with reference to FIGS. 1A-3D. Whileexemplary systems are depicted in FIG. 6, the components illustrated inFIG. 6 are not intended to be exhaustive or limiting.

As noted above, incoming data storage operations 652 may be received andhandled by the source data repository 602, and the data storageoperations that update or modify a volume 658, or more generally, modifyone or more datasets, may be streamed or transmitted to the target datarepository 624 as the data storage operations arrive. In other words,the source data repository 602 may be considered ‘active’ in that thesource data repository 602 accepts write operations and other operationsthat may modify the stored data, where the target data repository 624may be considered ‘passive’ in that the target data repository 624 mayaccept read operations, but not storage operations that may modify thestored data.

In this example, the source data repository 602 maintains a metadata log604, which may be referred to as a journal of modifying data storageoperations ordered by checkpoint. In some cases, a journal mayequivalently be referred to as a lightweight journal due to the journalincluding only metadata information, but little or no storage dataprovided by a user to be stored. In some examples, the metadata log 604may be generated or updated during a flush of storage data from NVRAM toa backend bulk storage—where a storage system architecture with NVRAM,and example backend bulk storage, are described above with reference toFIG. 2D. In some examples, the metadata, such as checkpoints 604, may bestored in the source data repository 602 as metadata, without beingincluded within a journal, or metadata log structure, where the journal,or metadata log 604 may be constructed on demand, such as in response toone or more checkpoints being ready for transmission to a target datarepository 624.

In some implementations, a checkpoint may also be referred to as anordered “lightweight checkpoint” of a dataset. In some examples, asdescribed elsewhere, a checkpoint may include metadata describing a setof updates, but where the checkpoints only reference the actual dataassociated with a corresponding set of updates by holding references towhere the data for a given checkpoint is stored in the normal course ofoperations for the storage system. A given set of updates may begin tobe staged in NVRAM, or a first tier of a storage system's storage,before the set of updates, or at least a portion of these of updates isflushed to backing storage, or a second tier of the storage system.

However, in this example, the data referenced by a set of updates withina given checkpoint may survive logical (or address range) overwrites andgarbage collection and is not duplicated into a separate metadatajournal. Further, lightweight checkpoints may be ordered in that toarrive at a complete and consistent point-in-time image of some point intime of the original dataset, each set of updates described in eachlightweight checkpoint between some prior consistent image and the pointin time corresponding to a particular lightweight checkpoint shouldeither be applied to form that point-in-time image or the update couldbe determined to be unnecessary, for example, being due to an overwriteor deletion. In some examples, lightweight checkpoints may be merged,which can be beneficial because merging may release some backing storedata that has been overwritten or deleted, for example by having beenwritten in an earlier checkpoint and overwritten in a later one that ismerged with the earlier one (in which case the data for the earlierwrite may no longer be needed), thereby allowing some otherwise helddata to be garbage collected.

Continuing with this example, such lightweight checkpoints are intendedto represent very fine-grained consistency point moments in time asconsistency points, with each lightweight checkpoint including a set ofupdates that have been signaled as completed, excluding a set of updateswhose processing has not yet started, and potentially including orexcluding updates that are concurrent with the moment in time thecheckpoint represents. In some example, formation of a new lightweightcheckpoint or a duration, or period, between two checkpoints may bebased on time slices, such as every few milliseconds, or operation countslices, such as every 50 to 500 update operations, or based on transfersize or some more complex relationship to update operations, such ascounting a few megabytes of modifications or some number of logicalextent updates, or they can relate to some explicit operation, such asan operation to explicitly tag or name a particular point-in-time so itcan be referenced later such as by a program noticing or being notifiedwhen it is received and applied by to replication target, anycombination of these and other triggers. Such tags or names could alsobe searched for within a continuous data protection implementation.

In some implementations, lightweight checkpoints may differ fromsnapshots in that they do not affect the durable structure of thestorage system beyond whatever side structure is used to store them,apart from the garbage collection or overwrite holds, and lightweightcheckpoints may be discarded with minimal effect, other than the releaseof those garbage collection or overwrite holds. Further, in some cases,lightweight checkpoints may also lack individual administrative handles,perhaps apart from lightweight checkpoints that are explicitly tagged ornamed. In some example, lightweight checkpoints exist almost exclusivelyas an ordered list of metadata bundles describing updates, where theordered list of metadata may be stored in a log-style structure.Further, lightweight checkpoints may be persistent or not persistent, independence at least upon an intended use of the lightweight checkpoint.In particular, near-sync replication may have crash or resynchronizationrecovery mechanisms that may operate independently of lightweightcheckpoints and that may then not require persisting of lightweightcheckpoint logs, while the target of replication might separatelybenefit from persisting checkpoints on the target storage system forfault recovery purposes, such as part of making application oflightweight checkpoints atomic.

In some implementations, if the metadata for a lightweight checkpointrepresents logical composite and leaf extents, as described in priorpatents, then a lightweight checkpoint may be a set of descriptions forupdating these logical composite and leaf extents which are themselvesmetadata descriptions that reference stored data by content identifierreferences In some cases, use of content identifiers irrespective of theuse of an extent model may also be beneficial in that such use preservesinformation about duplicates and may be used as part of a strategy toavoid transfer of content that a target storage system may already beknown to store. For further clarification, these prior patents include,U.S. patent Ser. Nos. 16/050,385, 62/598,989, and 15/842,850, which areincorporated herein for all purposes.

Continuing with this example, the structure of a metadata representationof a dataset may be particularly effective in a Flash storage systembecause Flash does not allow overwrite in place at the chip level andmay generally be driven, at some level, by garbage collection algorithmsthat can readily account for a wide variety of references that haveholds on written data. In some cases, some details may account for theNVRAM aspects which do not have to follow the samewrite-elsewhere-with-garbage-collection model, but at least the bulkdata writes for lightweight checkpoints are not separate writes thatrequire separate storage.

In some implementations, and as described in other sections of thisreference, some applications of lightweight checkpoints may includenormal operation of near-sync replication (in contrast to initializationor resynchronization), which may also be referred to as asynchronousreplication. In this example, lightweight checkpoints may be transferredover a network link to some target repository that may then apply thelightweight checkpoints to a tracking copy of the original dataset, withlightweight checkpoints (and their referenced data) being held at leastuntil the tracking copy has been updated.

In some cases, if checkpoints may be received or applied out-of-order,then all intermediate checkpoints may need to be received and appliedbefore the lightweight checkpoint on the source system can be released.Generally, lightweight checkpoints should be applied atomically, such asby using some transaction mechanism. One transaction mechanism is toreceive the metadata for a lightweight checkpoint, receive all the datacontent for a lightweight checkpoint and storing it locally on thetarget, and then roll forward the tracking copy to incorporate themetadata updates in the lightweight checkpoint with its data referencesupdated to reference the data content stored locally on the target.

Further, other applications of lightweight checkpoints may include:

-   -   In some examples, a tracking copy may be converted into a        snapshot or a clone to provide a stable image at some point in        time, thereby allowing use of a point-in-time image for testing        purposes or failover purposes;    -   In some examples, if a source-to-target interconnect and the        target storage repository are not roughly keeping up with the        rate that the source storage system itself is receiving data,        storing it, and forming and transferring lightweight        checkpoints, then these lightweight checkpoints can start        building up. In this scenario, there are several reactions to        this that can be used: lightweight checkpoints could be merged        to reduce their cost (the source dataset points-in-time        associated with named or tagged checkpoints might be        preferentially retained); back pressure could be put on the        source storage system to reduce the rate at which it receives,        processes, or completes updates; a subset of checkpoints could        be converted to more durable snapshots; or lightweight        checkpoint-based replication could be discarded in favor of        replication based on periodic snapshots. In some cases, some        number of periodic snapshots might already be kept for resync or        connection loss/reconnect purposes so switching to snapshot        replication may already be fully ready to go—meaning that        lightweight checkpoints since the last snapshot may simply be        discarded if replication is not keeping up sufficiently for the        lightweight snapshots to be useful (further clarification may be        found within U.S. patent Ser. No. 15/842,850, which is        incorporated herein for all purposes);    -   In some examples, connection loss or other kinds of        interruptions to replication may generally be handled by        switching to some other scheme, such as snapshot based        replication, or by using a resync model similar to what is        described for synchronous replication recovery, though without        the need to catch all the way up at the very end;    -   In some examples, the transfer of data can be initiated by the        sender side by simply sending the referenced data to the target        storage system along with sending the lightweight checkpoint        metadata updates. Further, the transfer of data may instead be        initiated by the target storage system: if the lightweight        checkpoint metadata lists content identifiers, then the target        storage system can reuse references to content it already stores        but can then request retrieval of content it does not current        store. This can reduce total bandwidth required, though if the        network link has to be sized for the update rate, the benefit        may be low; and    -   In some examples, if the source storage system itself stores        content compressed as some kind of compressed blocks, then the        compressed blocks may in many cases be transferred directly        rather than being uncompressed and then possibly recompressed        before being transmitted over the network.

In some implementations, lightweight checkpoints may be used toimplement continuous data protection either on the original storagesystem—with or without replication being involved—or on a replicationtarget system by storing the lightweight checkpoints on the targetstorage system rather than simply applying and then discarding them. Incontinuous data protection, various point-in-time images of a datasetcan be accessed by rolling forward a copy of a dataset to include alllightweight checkpoints up to the lightweight checkpoint correspondingto some source dataset point-in-time of interest.

For example, if the storage system also implements durable snapshots,then only lightweight checkpoints since the point-in-time of the mostimmediately prior snapshot may need to be applied. Generally, highergranularity is more interesting for more recent history of a dataset andless granularity is needed farther back, allowing for the possibility ofever more aggressive lightweight checkpoint merging as points-in-timerecede, or eventually discarding them in favor of less frequentsnapshots.

Further, if continuous data protection is used to locate a point in timejust before where an unwanted change or corruption was introduced, thenrelatively fine grained lightweight checkpoints (milliseconds to a fewseconds to every few minutes) might only need to be kept until plenty oftime has elapsed to ensure that corruption will have been noticed andrecovery procedures started. After that, 30 minute or hourly or evendaily snapshots might be preferable (or such rollbacks may be consideredunnecessary). Any specific lightweight checkpoint can be converted intoa durable snapshots if snapshots hadn't been created explicitly. Iflightweight checkpoints can be named or tagged, continuous dataprotection could support locating and accessing those named lightweightcheckpoints.

In some implementations, as noted below, under some storage systemconditions, or in response to a user-specified configuration,near-synchronous replication may be transitioned to different type ofreplication, including periodic replication or synchronous replication.Further, in some implementations, a source data storage system mayimplement synchronous replication that is pod-based among a cluster ofstorage systems, but where one or more of the source data storagesystems also implement lightweight checkpoints for near-synchronousreplication with a target storage system that may be initiated in theevent of a communication fault with the other storage system in thecluster of storage systems—thereby allowing the source storage system tomaintain both synchronous data replication over near distances and tomaintain data resiliency over longer distances. Further, in someexamples, RPO may be configurable, where the time or operation size oflightweight checkpoints may be configured or adjusted based on, atleast, available network bandwidth or supporting flow-control (asdiscussed above). In some cases, if a set of synchronously replicatingstorage systems exchange checkpoint information between them as part oftheir operation, then near-synchronous replication can operate andcontinue from any of the storage systems that synchronously replicatethe checkpoint information, including continuing after the failure ofone such storage system, including parallel transfer of data andmetadata from multiple of the synchronously replicating storage systems.Such parallel data transfer could, for example, involve the target ofnear-synchronous replication requesting data for referenced composite orlogical extents or content identifiers from any set or subset of thesynchronously replicating storage systems.

Further, in some implementations, an addition to near-synchronousreplication is short-distance synchronous replication of metadata anddata updates, combined with longer-distance non-synchronous replicationof lightweight checkpoints. In such an example, this may provide what issometimes called “bunker” replication where a storage system withinsynchronous replication distance is sized to store enough for in-transitdata and metadata but is not sized to store a complete dataset. In thisexample, if the primary (complete) copy fails but the intermediate“bunker” storage survives, then the further distant non-synchronoustarget can be caught up by applying the updates that were storedsynchronously on the bunker storage. Further, in this example, if bothprimary and bunker storage fail, then at least the longer-distancestorage is consistent and within the longer distance RPO. Continuingwith this example, the lightweight checkpoints may be formed andtransferred by either the bunker storage system or by the primarystorage system, or can be formed and transferred by a combination of theprimary storage system and the bunker storage system.

In some implementations, a metadata log 604 schema may be sorted by(pod, checkpoint), which allows for traversal in a correct order, wherea same schema may be used on both a source data repository 602 and atarget data repository 624. In this example, a write operation may beencoded in a metadata log 604 by indicating both a physical extentidentification along with address information of all writes for a givencheckpoint. Further, in some cases, a metadata log 604 may containoperations to modify a metadata representation 614 of the dataset thatcorrespond to system operations, such as copy-on-write (CoW). Forexample, modifications to a metadata representation 614 may includemodifications due to an XCOPY, WSAME, snapshots, CoW, among others. Anexample of such operation-style metadata may include a sequence ofupdates to logical and composite extents, with any written content tiedto a checkpoint being retained at least until the checkpoint is nolonger needed for replication or other purposes. In this case, themetadata log may contain the logical and composite logical extentupdates including references to any stored data, with the stored databeing a held reference to the content stored in the storage system forits regular use but with any garbage collection or overwrite held off aslong as the checkpoint is retained. Further, in some cases, contentoverwrites within a checkpoint (including within merged checkpoints ifcheckpoint merging is supported) may discard the hold on the earliercontent replaced by later content described by the checkpoint. In someexamples, a metadata log 604 may include metadata representation 614identifier allocations on a source data repository 602, which allows thetarget data repository 624 to avoid trying to look up contentidentifiers that do not exist on the target data repository 624.

In different embodiments, the lifetime of checkpoint entries 606 a, 606b may be configurable to allow for different options for data recovery,including a lifetime extending for an ongoing length of storage servicesthat allows for continuous data protection. In this example, theconfigurable replication system may provide continuous replication,whereas data storage operations that modify a volume or dataset arrive,the storage operations are grouped into checkpoints, and where a givencheckpoint may include varying numbers of storage operations. In someexamples, a given checkpoint may include metadata for up to 100 storageoperations. As noted herein, because a garbage collection process maykeep stored data based on references to the stored data location beingreferenced by either general storage system references within thestorage system's general metadata or by a metadata log that includescheckpoints, then the length of the lifetime of the checkpointscorresponds to a length of time for a recovery window for continuousdata protection.

In this example, a checkpoint may be considered a smallest unit of dataconsistency, where if the metadata log 626 received at the target datarepository 624 includes a particular checkpoint, then a replica dataset634 that is generated by replaying the storage operations in theparticular checkpoint will include all storage operations from allcheckpoints that were generated prior to the particular checkpoint—andsuch a policy provides for a crash consistent recovery point for thereplica dataset 634. Further, if there is a snapshot that is from apoint-in-time earlier than the desired replay point, then only replaycheckpoints since that snapshot may be needed during a recovery. In thisexample, checkpoints may be merged to allow garbage collection ofoverwritten data, and checkpoints may also be periodically converted tosnapshots if that results in a cleaner format or a better or simplerrelationship with garbage collection.

In some implementations, snapshots may be used to coordinate a point intime in the update stream. For example, an application can make someupdate then issue a snapshot request, and if snapshots are a type ofupdate that is replicated, then when the snapshot appears on the targetstorage system, that point in time for the application is present. Inthis example, this could be generalized to some kind of tag, such that asnapshot is not necessarily needed. Further in this example, if somemetadata tag is set on a dataset, or on some component within a dataset,and that tag is handled as a type of update within the log/checkpointmodel, then a monitoring program on the target storage system coulddetect when that point in time of the source dataset has been reached onthe target by noticing the appearance of the tag. The storage systemcould further support a means of notifying programs waiting for suchsnapshots or named or tagged checkpoints being received and processed ona target storage system. Yet further, when the target storage system hasreceived and processed such snapshots or named or tagged checkpoints, itcould send a notification back to the source storage system, which couldthen, in turn, notify interested programs that the snapshot or named ortagged checkpoint is known to have been received and processed on thetarget system. Continuing with this example, such a process could beused, for example, by a program running against the source storagesystem that updates some data, tags a checkpoint, and then takes someaction when notified by the source storage system that the taggedcheckpoint (and thus the update) is known to have been replicated. Forexample, a high level task could perform a set of updates which arereplicated, and where the action taken is that aspects of the continueonly after receiving that notification. In some cases, this in turnallows higher level tasks to be replicated effectively synchronouslyacross long distances even when performing many smaller operations thatare not themselves replicated synchronously. For example, a webapplication might use this to ensure that some requested update to, forexample, a user profile is durable across distances before a web pageshows the durable change to the user profile.

While in this example, replication is described in the context ofreplicating a “volume”, in general, the described replication techniquesmay be applied to any generalized dataset. In other words, in thegeneral case, replication applies to a dataset, which may include one ormore volumes, and/or one or more other types of data or collections ofdata, at a given point in time. In some cases, a dataset may be adataset specified by a pod, where in a pod the actual set of volumes maychange as volumes are added to and removed from the pod, and trackingwill reflect that by adding and removing volumes. Further, in someexamples, continuous data protection of a pod may result in volumesexisting or not existing based on which checkpoint we roll backward toor forward to, and on the volume membership at the pod's source time forthat checkpoint.

Continuing with this example, each incoming write operation may bepersisted as described above with reference to FIGS. 1A-3D, where inaddition to the source volume 658 being updated, a reference to thestorage location of the data corresponding to the write operation isadded to the metadata log 604. In this way, the metadata log 604 mayserve as a buffer that allows recovery after a network outage andsupport bursts of write operations without impeding the reception orhandling of storage operations by the source data repository 602. Inthis example, as checkpoints 606 a, 606 b are completed and createdwithin the metadata log 604, the checkpoints 606 a, 606 b may bereplicated to the target data repository 624 by, for example,transmission of one or more messages that include metadata log 608 usinga standard communication protocol over one or more networks 659. In thisexample, independent of the transmission of the metadata log 604, thesource data repository 602 may also transmit data 610 corresponding tothe checkpoints 606 within the metadata log 604.

In some implementations, as checkpoints are created within the sourcedata repository 602, a monitoring service may monitor which checkpointsare complete, and determine where the checkpoints may be read. In someexamples, a checkpoint may be created as a checkpoint is written intoNVRAM, or a first tier of fast data storage. In some cases, themonitoring service may provide an interface for accessing checkpointdata from NVRAM or from a given storage location.

Continuing with this example, a target data repository 624 may open oneor more forwarding streams from the source data repository 602, where onthe source data repository 602, each forwarding stream may claim anumber of checkpoints from the monitoring service. In this example, agiven forwarding stream may fetch metadata log 614 information for oneor more checkpoints 606. Similarly, in this example, a given forwardingstream may fetch corresponding storage data for the one or morecheckpoints 606. In this way, one or more communication channels may beopened, in some cases in parallel, between the source data repository602 and the target data repository 624, where the one or morecommunication channels operate to transfer the metadata log 614 andcorresponding data 612 between the source data repository 602 and thetarget data repository 624.

In this example, in response to receiving the metadata log 608, thetarget data repository 624 may persist the checkpoints 628 a, 628 b intoa local metadata log 626. Based on a successful write of the checkpoints628 into the local metadata log 626, the target data repository 624 mayrespond to the source data repository 602 with an acknowledgment, wherein response to the acknowledgment, the source data repository 602 may—independence upon a configuration setting—delete or maintain thecheckpoints 606 a, 606 b.

In some examples, the target data repository 624 may periodically, or inresponse to receiving metadata log 626 information from the source datarepository 602, replay the storage operations within the checkpoints 628to generate and update a tracking volume 632. In some examples,replaying the storage operations may include converting metadata log 626information into regular formatted metadata for the storage system andconverting global content identifiers into local content identifiers;for example, such converting may include mapping content identifiersbetween the source data repository 602 and the target data repository624. In this example, a metadata representation 630 may be implementedsimilarly to metadata representation 614 on the source data repository602, where the physical location information may be different based onuse of physical storage on the target data repository. In some examples,a tracking volume may also be referred to as a “shadow” volume.

In some implementations, content identifiers may be used to mark writtencontent, including content that the source has already determined was aduplicate of other content that the source knows of (for example,through tracking the source write history, source snapshot history,source virtual copy history, and/or any local duplicate detection). Insome examples, the content identifiers may be leveraged when doingrecovery, such as after an extended outage, or when converting fromnear-sync replication to periodic or asynchronous replication.

In some implementations, delivery of a checkpoint as a set of metadataupdates and content identifiers may result in the target storage systemnoticing which content identifiers the target storage system is alreadyaware of and already stores—the target storage system may then requestfrom the source storage system any content whose content identifiers thetarget storage system does not already store or is not already aware of.In some cases, except at moon-level distances, checkpoint delivery maystill result in sub-second RPOs, and may also reduce data transferbandwidth if duplicates are common. Further, in this example, until allmissing content has been requested and received by the target storagesystem, the checkpoint may not be considered completed so the checkpointmay not be deleted to allow garbage collection.

In some examples, the tracking volume 632 is generated in response to apromotion event, where a promotion event may be based on a detectedfailure, detected impending failure, or detected degradation ofresponsiveness beyond a compliance policy threshold of the source datarepository. In some cases, the promotion event may be automaticallygenerated based on such a detection of a promotion event, and in othercases, the promotion event may be responsive to a user specifying thatthe replica data on the target data repository 624 be promoted.

In some implementations, a user may promote a tracking volume 632 inorder to use a replica of the source data for different uses, such asfor testing—where testing may include modification of the replica datain the tracking volume 632. However, based on a promotion eventgenerating a replica volume 634, any modifications or corruption to thetracking volume that may occur during testing may be undone or reversedby referencing the replica volume 634. In this example, promotion of thetracking volume 632 also includes configuration filtering and/orreconciliation as part of making the tracking volume 632 a new volumeavailable for use by a computational process, a computing device, or acompute node. Further, demotion or deletion of a volume may cause a hostto reconfigure a connection to continue to access replica data on thetarget data repository 624.

While in some implementations, received metadata log 608 information maybe played to generate the tracking volume 632 without storing themetadata log 608, or keeping a stored metadata log 626, the storedmetadata log 626 may serve as a basis for providing data consistencyguarantees described above with regard to the storage operations in acheckpoint.

Further, separating the generation of the tracking volume fromdependence upon checkpoints as they are received, and instead generatingthe tracking volume from stored checkpoints supports receivingcheckpoints out of order and the option to order the checkpoints priorto building the tracking volume 632. In other words, checkpoints may betransmitted and received out of order, but in general, checkpoint maynot be applied out of order, so in some cases applying the checkpointsto a tracking dataset or volume may be delayed until interveningcheckpoints are received. This example may be generalized as requiringthat all intermediate checkpoints be received before the trackingdataset or volume may be advanced to the time associated a receiveddataset (irrespective of how checkpoint updates are actually applied).

Further, in this example, if for some reason, such as a recovery eventon the source data repository 602 based on data loss or based on a useror application requesting access to the replica volume or based on afailover request to begin using the replica volume 634 as a primary oruser-accessible volume, then the target data repository 624 may promote,or activate, the replica volume 634. In response, the existingcheckpoints in the metadata log 626 may be replayed to generate aversion of the tracking volume 632 consistent with a most recentcheckpoint received, and the tracking volume 632 may be used to create aversion of the source volume 658.

In some examples, in response to a recovery event—such as a source datarepository 602 losing a connection with a host computer (not depicted)or applications sending storage operations, performance degradationbeyond a threshold value, storage capacity exceeding a threshold value,or a degradation in response times—the target data repository 624 may bepromoted to handle all further storage operations from the hostcomputer, and another data repository may be selected. In this example,the replica link from the original source data repository 602 to thetarget data repository 624 may be reconfigured to flip directions, wherethe target data repository 624 becomes a new source data repository andanother data repository becomes a new target data repository, and whereother replica link characteristics stay the same.

The continuous replication from the source data repository 602 to thetarget data repository 624 may also be described in terms of pods, wherepods and pod characteristics are described above with reference to FIGS.4 and 5. As noted above, where FIG. 5 describes use of pods inimplementing synchronous replication, in this example, pods are used forasynchronous, or near-synchronous replication. In other words, in thisexample, source volume 658 may be included within a pod 640, and thereplica volume 634 may be included within pod 642. In this way, inresponse to an indication that a user or application intends to use thereplica data, and the tracking volume 632 being promoted, the replicapod 642 is updated with the most current contents from the trackingvolume 632. While in this example a pod is depicted as include a singlevolume, in other examples, a pod may generally hold any type andquantity of data, including multiple volumes and/or multiple structuredor unstructured datasets.

Further, in some implementations, as discussed above, there may be adynamic relationship of volumes to pods, where the dynamic collection ofvolumes within a pod may be related to a clock value within the updatestream on a source storage system. For example, a checkpoint mayintroduce volumes to a pod, change volume characteristics (name, size,etc.) and may remove volumes. In this example, if there are protectiongroups or some similar organizational concept within a pod, then theseprotection groups may also change with those changes being propagatedthrough checkpoints. In this way, a near-sync target storage system mayactually take over relatively seamlessly as a periodic replicationsource with all relationships intact, minus whatever time difference thelast processed checkpoint is from the previous active source. In short,in some cases, it is the unified nature of the metadata model betweensynchronous replication, near synchronous replication (near-sync), andperiodic replication (or asynchronous) replication, coupled with thelocal-to-global-to-local content identifier and logical and compositeextent identifier transformations that provides improvements to variousaspects of a storage system and of a storage system replication process.

As depicted in FIG. 6, a data repository 602 stores both data 612 fromincoming storage operations 652, and a metadata representation 614 ofthe data 612. In this example, a metadata representation 614 may beimplemented as a structured collection of metadata objects that,together, may represent a logical volume of storage data, or a portionof a logical volume, in accordance with some embodiments of the presentdisclosure. Metadata representation 614 may be stored within the sourcedata repository 602, and one or more metadata representations may begenerated and maintained for each of multiple storage objects, such asvolumes, or portions of volumes, stored within the data repository 602.

In other examples, other types of structured collections of the metadataobjects are possible; however, in this example, metadata representationsmay be structured as a directed acyclic graph (DAG) of nodes, where, tomaintain efficient access to any given node, the DAG may be structuredand balanced according to various methods. For example, a DAG for ametadata representation may be defined as a type of B-tree, and balancedaccordingly in response to changes to the structure of the metadatarepresentation, where changes to the metadata representation may occurin response to changes to, or additions to, underlying data representedby the metadata representation. Generally, metadata representations mayspan across multiple levels and may include hundreds or thousands ofnodes, where each node may include any number of links to other nodes.

Further, in this example, the leaves of a metadata representation mayinclude pointers to the stored data for a volume, or portion of avolume, where a logical address, or a volume and offset, may be used toidentify and navigate through the metadata representation to reach oneor more leaf nodes that reference stored data corresponding to thelogical address. Data objects may be any size unit of data within thedata repository 602. For example, data objects may each be a logicalextent, where logical extents may be some specified size, such as 1 MB,4 MB, or some other size, such as a system-specified block size.

In some implementations, as described above with reference to FIGS.1A-3D, the data repository 602 may include multiple types of datastorage, including NVRAM and Flash storage, where NVRAM may be used as astaging area for incoming storage operations, and where Flash storagemay provide long-term, durable storage. In this example, the sourcevolume 658, or portions of the source volume 658, may be stored inNVRAM, and the entire source volume may be stored within Flash memory,or as depicted in FIG. 6, data store 660.

In some implementations, the metadata log 604 is ordered according tocheckpoints, and is a journal, or log, describing all changes to storeddata, and where checkpoints within the metadata log 604 that have notalready been transmitted to the target data repository 624 aretransmitted in response to generation or completion of a singlecheckpoint, or a set of checkpoints, in dependence upon a target RPO.For example, depending on a size of a checkpoint, or a quantity ofdata-modifying operations described by the checkpoint, more frequenttransmission may be may in dependence upon a lower target RPO.

Further, as described above, checkpoints 606 within the metadata log 604may include references to stored content such as blocks within datastore 660 where that stored content consists of what the storage systemwould have stored were it not for the replicated checkpoint. In thisway, the storage required for the metadata log and checkpoints isreduced considerably versus what would be required for a complete log ofall updates that includes both metadata and a duplicate copy of datathat was being written to the source storage system. In some examples, aservice, or process, or controller, operating on the source datarepository 602 may monitor creation of checkpoints, and forward ortransmit the checkpoint, or set of checkpoints, to the target datarepository 624.

In some implementations, references within checkpoints, and as aconsequence, references within a metadata log, may refer to objects ordata stored on the source data repository 602 that have been modified bysubsequent storage operations, but where the data stored on the sourcedata repository 602 has not yet been transferred to the target datarepository 624. In such a scenario, if a garbage collection process onthe source data repository 602 relies only on a reference tablemaintained by a storage controller managing data within the source datarepository 602, then the garbage collection process may delete data orreallocate or otherwise overwrite a storage location that results indata referenced by a metadata log becoming unavailable or no longervalid as a source of content for a replicated checkpoint, therebycompromising the replication. To overcome such a scenario, in someexamples, a garbage collection process on the source data repository 602may reference both a reference table maintained by a storage controlleror source data repository 602 process and also a list of references heldby lightweight checkpoints, and specifically, a list of referenceswithin one or more checkpoints within a metadata log. Over time,checkpoints can be merged together to allow some overwritten content tobe released for garbage collection.

In this way, based at least on both sources of data references—systemreferences and metadata log references—a garbage collection process maypreserve data that has not yet been replicated, but would otherwise bemodified or deleted by subsequent storage operations. Such datapreservation during garbage collection also holds true for continuousdata protection, when checkpoints are retained on a source storagesystem for some period of time in order to allow for flexible rollback,where the period of time may be configurable to an arbitrary quantity oftime. In other words, a garbage collection process may determine thatcontent at a storage location is not needed, and may be reclaimed orgarbage collected, based on the content at the storage location notbeing referenced by any checkpoints in a metadata log or referenced by astorage system reference table.

In some implementations, as noted above, each checkpoint is exclusive ofevery other checkpoint, and based on the checkpoints being ordered, thecheckpoints may be transmitted in any order to the target datarepository 624. In this example, on the target data repository 624, thecheckpoints are applied, or replayed, in order to create a consistentversion of the data stored on the source data repository 602. In somecases, the data transmitted from the source data repository 602 to thetarget data repository 624 may be read from data storage within datastore 660, for example if the data has been flushed from the NVRAM toFlash, or from the NVRAM, for example if the data continues to be storedin the NVRAM.

In some implementations, depending on configuration settings withrespect to RPO, data may remain on the source data repository 602 formore or less time. In some cases, the longer that data remains on thesource data repository 602, the greater the opportunity to performtransformations that may reduce the quantity of data transferred to thetarget data repository 624. For example, incoming data may bededuplicated, or overwrite previously written data, or may be deleted,among other operations or transformations, which may reduce the quantityof data that is transferred from the source data repository 602 to thetarget data repository 624.

In some implementations, the messaging mechanisms may be implementedsimilarly to the messaging mechanisms described above for synchronousdata replication, with reference to FIGS. 4 and 5.

For further explanation FIG. 7 illustrates a configurable replicationsystem that provides continuous replication with minimal batching and anadjustable recovery point objective. In this example, a managementobject that specifies a replication policy between a source pod and areplica pod may be referred to as a “replica link”.

A replica link specification may include a specification for a source ofdata for replication and a target for replica data, including storagedata, checkpoints, metadata representations, or metadata logs (orjournals). In some cases, the source of data may be a volume, astructured or unstructured dataset, a bucket, a file within a filesystem, an entire file system directory, or a combination ofsources—where the data sources are stored within a source datarepository 602.

In some cases, there may be one or more replication data targets, where,for example, a source data repository 602 includes multiple pods 640,682 and multiple, respective replication data targets, illustrated astarget data repositories 688, 694. In this example, source pod 640includes a volume 658, source pod 682 includes a volume 680, replica pod690 includes replica volume 692, and replica pod 696 includes replicavolume 698. Further, as illustrated in FIG. 7, there may be one or morereplica links 684, 686 that manage replication from the source datarepository to one or more target data repositories 688, 694.

In some implementations, in an example where replication includes theuse of snapshots of the source data, a replica link may specify asnapshot policy, which may specify conditions under which a snapshot maybe taken. For example, if asynchronous replication, as described abovewith reference to FIG. 6, becomes backed up—such as where the quantityof backed up data and/or metadata pending transfer would result in anRPO that is beyond a threshold RPO value—then a snapshot may be taken.In other examples, the snapshot policy may specify that snapshots are tobe taken at a specified schedule, and may specify a length of time forkeeping snapshots available.

Further, in some examples, instead of or in addition to generatingsnapshots for a source data repository to reduce a backlog of metadataand/or data transmissions to a target data repository, a source datarepository may perform one or more transformations or optimizations onthe data and/or metadata to be transmitted. For example, if a sourcedata repository determines that data pending transfer is identical todata already transferred, then the source data repository may avoidsending the duplicate data that is pending transfer. As another example,checkpoints within a metadata log may be folded together, where if thereis an overwrite between two checkpoints, then the source data repositorymay avoid sending data that has been overwritten, as reflected by thefolded checkpoints.

Further, a replica link may also specify a replica policy, where thereplica policy may include or be exclusively snapshots, specifycontinuous, but not synchronous replication, or specify synchronousreplication. In all cases, a user may be provided with a single userinterface, with a single workflow, for a replica link specificationallowing for specification of one or more characteristics for datareplication.

In some implementations, a replica link may also specify a compliancepolicy. For example, a compliance policy may specify that for aparticular type of replication policy—for example, continuous,synchronous, asynchronous, snapshot—the replication should adhere tospecified parameters. As one example, for a snapshot replication policy,the compliance policy may specify that if a frequency, or schedule,according to which snapshots are taken fails to meet a threshold levelof compliance, then a system warning may be generated. Similarly, ifdata and/or metadata is not being transferred quickly enough to satisfya specified RPO, or other performance metric, then a system warning oralert may also be generated. Alternately, updates on the source storagesystem can be slowed down in order to avoid exceeding the RPO.

However, in other cases, in response to failing to satisfy a thresholdlevel of compliance, other corrective actions may be taken, for example,of a target data repository is a cause of a backup, or has had a drop inperformance, or is nearing capacity, then a diagnostic may be initiatedto identify correctable issues or an alternate target data repositorymay be identified for transferring the target replica data to the newtarget data repository. In some implementations, the replica link mayalso store attributes of the replication history, such as identifying apoint at which a source data repository became frozen or unavailable.

Generally, a replica link may be used to specify a replicationrelationship, and depending on whether a pod is active or passive,determines a direction of the replication, where replication occurs inthe direction of an active (or activated or promoted) pod to a passive(or deactivated or demoted) pod. In this example, a replicationdirection may also be changed if all pods connected to the replica linkare in communication and reach consensus on a change in replicationdirection. In this way, a source pod may be protected by creating areplica link to another, deactivated, pod on another data repository,where hosts or host groups may be connected to the deactivated pod onthe target data repository to read—nearly synchronous—data from thesource pod.

For further explanation, FIGS. 7 and 8 illustrate aspects of selectivecommunication protocol layering for synchronous replication between oneor more storage systems according to some embodiments of the presentdisclosure. More specifically, as part of an example embodiment ofselective communication protocol layering, FIG. 7 illustrates an examplemethod of a listen control flow, FIG. 8 illustrates an example method ofa connect/accept control flow, and FIG. 9 illustrates an example methodof a send/read control flow.

FIG. 7 illustrates aspects of selective communication protocol layeringfor synchronous replication between one or more storage systemsaccording to some embodiments of the present disclosure. Morespecifically, as part of an example embodiment of selectivecommunication protocol layering, FIG. 7 illustrates example method of aconnect/accept control flow that may be implemented on storage systemssimilar to the storage systems described above with reference to FIGS.1A-1D, FIGS. 2A-2G, FIGS. 3A-3C, FIGS. 4A and 4B, FIGS. 5-6C, or anycombination thereof.

In some implementations, a replication protocol or replication schememay be specified to provide bidirectional communication pathsestablished between storage systems using selective features of one ormultiple standard communication protocols where the underlying standardcommunication protocols are traditionally designed for data transmissionin a single direction, from a computer system providing storage contentto a storage system providing storage services.

Further, in some implementations, storage systems may then implementsynchronous replication based on the replication protocol or replicationscheme providing bidirectional communication between storage systems. Inthis way, the synchronous replication protocols or schemes describedabove with reference to FIGS. 6A-6B may be carried out by using thereplication protocol or scheme providing bidirectional communication.

In the following examples, a group of multiple storage systems that areconfigured to synchronously replicate one or more datasets among eachand every storage system within the group may be referred to as acluster of storage systems, or may be equivalently referred to as anactive cluster or active cluster of storage systems. As noted above,example implementations of an active cluster of storage systemssynchronously replicating datasets and managing pods are described abovewith reference to FIGS. 6A-6B, and further described within the parentapplications of the present disclosure.

In some implementation, as explained in greater detail below, someportions, but not all portions of multiple communication protocols areused to implement bidirectional data replication in a manner that isoutside of the design scope of the underlying multiple communicationprotocols.

Further, in some implementations, by using selected aspects of theunderlying communication protocols, in addition to reconfiguring aspectsof the underlying communication protocols, various embodiments of areplication protocol or scheme provide for bidirectional replication ofdata that more efficiently—by, for example, using fewer messages ascompared to a standard deployment of the underlying communicationprotocols—provides support for the synchronous replication protocols orschemes described above with reference to FIGS. 6A-6B, in addition toproviding support for other types of replication services.

In some implementations, in addition to the replication protocols orschemes described above with reference to FIG. 6 implementingsynchronous replication, the bidirectional features of the replicationprotocol or scheme may also be used to implement other types of datareplication protocols or schemes, including asynchronous replication, ormore generally, any protocol or scheme based on bidirectional transferof data between computer systems and/or storage systems.

In some implementations, the communication protocols used may be: FibreChannel, NVMe, NVMe over Fabrics (NVME-oF), TCP/IP, RoCE, orcombinations of these communication protocols.

As one example of modifications to underlying protocols, during adiscovery process for a Fibre Channel protocol layer, a given storagesystem may receive a log of other target storage systems. Further, inthis example, at the NVMe protocol layer, the given storage system mayreceive a list of identifiers for the other target storage systems,where the list of identifiers may be a list of NVMe qualified names(NQNs).

However, in this example, in accordance with the replication protocol orscheme, a format of an NQN may be modified to include an identifierusable by the replication protocol or scheme, where the replicationprotocol identifier is usable by the storage system to identify a listof storage systems that may be included within a data replicationconfiguration. More specifically, in this example, the list of storagesystems may be a list of storage systems that may be included within anactive cluster of storage systems that are synchronously replicating adataset.

Further, in some implementations, as noted above, Fibre Channel and NVMeare designed for a host computer or server to store data on a storagesystem, but are not designed for a connected storage system toreciprocally store storage content on the host computer, much less wherethe host computer and storage system are configured to synchronouslyreplicate data.

By contrast, in some implementations, the replication protocol or schemespecifies logic that establishes bidirectional communication that iscarried out by an initiator storage system establishing a communicationchannel in one direction with a given target storage system, and thetarget storage system—in response to establishing a communicationchannel from the initiator storage system to the target storage systemand determining that there is no communication channel from the targetstorage system back to the initiator storage system—establishes acommunication channel back to the initiator storage system.

In this way, in some examples, bidirectional communication channels maybe established to support the bidirectional data links described abovewith reference to the synchronous replication protocols or schemesdescribed above with reference to FIGS. 6A-6B, where multiple storagesystems within an active cluster provide synchronously replicated dataservices. In other words, the disclosed replication protocol or schemespecifies a distinct networking stack and communication protocol that isdifferent from a deployment of standard implementations, either alone orcombined, of the underlying Fibre Channel, NVMe, and IP protocols.

In some implementations, the replication protocol or scheme may providemultiple types of functionality to implement aspects of establishingconnections between storage systems, listening for new storage systemscoming online, and reading and sending as part of bidirectionalcommunication between computer systems and/or storage systems.

More specifically, in some implementations that include one or moreaspects of Fibre Channel, NVMe, and TCP/IP communication protocols, thereplication protocol or scheme may include: (I) a replication protocollayer for active cluster (in this example, the highest layer); (II) areplication transport layer; (III) an NVMe-oF layer; and (IV) an NVMetransport layer, where, in some examples, the NVMe transport layer maybe Fibre Channel.

For example, with regard to (I) above, the synchronous replicationprotocol layer, the replication protocol or scheme may include: (a)discovery functionality; (b) remote client connector functionality; (c)send functionality; (d) receive functionality; and (e) disconnectfunctionality, among others.

Discovery functionality, listed as (I)(a) above, may include:

-   -   (i) listening for remote storage system identifiers that may be        interested in being included within a configuration for        establishing synchronous replication—where the storage system        identifier is used by the replication protocol or scheme, but        not used or necessary for the underlying communication        protocols;    -   (ii) listening to a replication transport service for new        storage system identifiers or for new paths for existing storage        system identifiers where a given storage system may query other        storage systems for path information, where the query may be        based on respective storage system identifiers for the other        storage systems in the active cluster; and    -   (iii) determining whether to connect using a particular one or        more new paths to a given storage system in the active cluster        or whether to keep using existing paths to the given storage        system.

Remote client connector functionality, listed as (I)(b) above, mayinclude:

-   -   (i) using a list or vector of paths to connect to remote storage        systems;    -   (ii) controlling a quantity of connections to establish, and        tracking if the connections are successful; and    -   (iii) maintaining a list of paths accessible to the replication        protocol layer.

Send, receive, and disconnect functionality, listed as (I)(c)-(e) above,may include: sending data to other storage systems by using FibreChannel; receiving data from other storage systems by using FibreChannel; and disconnecting from other storage systems by initiatingdisposal of a transport layer endpoint or by detecting and responding toerrors on a send. Further, disconnect functionality may be driven by theFibre Channel detecting a disconnection of a target from a transportfabric.

Continuing with this example, with regard to (II) above, the replicationtransport layer, this layer may include: (a) messaging transportfunctionality; and (b) transport endpoint functionality.

Messaging transport functionality at a replication transport layer,listed as (II)(a) above, may include:

-   -   (i) listening, as an initiator and in accordance with the NVMe        discovery protocol to get new NVMe qualified names (NQN)        identifiers based on Fibre Channel world wide port names        (WWPNs), and/or remote Fibre Channel WWPN identifiers, where in        response to discovering a new storage system, the replication        protocol layer listener, described above at (I)(a)(i), may be        notified;    -   (ii) receiving connect/transport endpoint creation requests,        which may include configuring or setting up a transport endpoint        object that may: allocate buffers or trackers on the initiator        side of a connection, allocate buffers or trackers on a target        side of a connection, issue connect commands in accordance with        an NVMe transport layer, wait for target connection in        accordance with an NVMe transport layer;    -   (iii) tracking pending initiator-side connections waiting for        target-side connects; and    -   (iv) listening to NVMe transport for target connects in order to        complete an initiator connection, which may include setting up a        transport endpoint object, as above, where the transport        endpoint object may allocate data buffers and/or trackers for        the initiator side of a connection, allocate data buffers and/or        trackers for a target-side of a connection, send success        messages over NVMe over Fibre Channel (FC-NVMe), and issue        connect commands via an NVMe transport layer.

Transport endpoint functionality at a replication transport layer,listed as (II)(b) above, may include functionality for:

-   -   (i) receiving data as a Fibre Channel endpoint, where receiving        data may also include allocating a buffer list, and further        include sending a read for every allocated data buffer, where        reading data is described in greater detail above with reference        to FIG. 5;    -   (ii) sending data, where sending data may include receiving a        buffer list from the replication protocol layer that interfaces        with storage systems in an active cluster, and command messages        to allocate target and connection specific data buffers, and may        include initiating copying contents into respective NVMe read        buffers;    -   (iii) receiving data at the replication transport layer        corresponding to NVMe initiator and read completion protocols,        where receiving data at the replication transport layer may also        include providing a read task that may handle parsing header        information, verification, allocating buffers, and copying in        data;    -   (iv) error handling; and    -   (v) disconnecting from one or more storage systems in the active        cluster, which may include disposing of connections at the        replication transport layer and the NVMe layer.

Continuing with this example, with regard to (III) above, the NVMe-oFprotocol layer, this layer may include: (a) polling; (b) initiatordiscovery; (c) initiator control; (d) initiator connections; (e) targetcontrol; and (f) target connections.

Polling functionality at the NVMe-oF protocol layer, listed as (III)(a)above, may determine whether an NVMe initiator connection has beensuccessfully established, whether a target connection received a readrequest, whether a target control received a connection request, whetheran initiator connection received a read completion, among otherfunctions.

Initiator discovery functionality at the NVMe-oF protocol layer, listedas (III)(b) above, may get notification for new local WWPN/remote WWPNpairs, initiate NVMe discovery to obtain NVMe qualified names (NQNs),and also provide remote and local WWPNs and NQNs to the messagingtransport functionality at the replication transport layer, listed as(II)(a) above.

Initiator control functionality at the NVMe-oF protocol layer, listed as(III)(c) above, may provide keep-alive services to an initiator, whichmay include sending keep-alive messages, terminating connections ontimeouts, track keep-alive latencies, and, if no admin connections areestablished when a connection is requested, admin connections may beestablished.

Initiator connection functionality at the NVMe-oF protocol layer, listedas (III)(d) above, may maintain queue identifiers, send NVMe readcommands, or answer read requests.

Target control functionality at the NVMe-oF protocol layer, listed as(III)(e) above, may determine whether a connection is accepted based onspecified NQNs, and may provide callbacks to a target storage system inresponse to new connections.

Target connection functionality at the NVMe-oF protocol layer, listed as(III)(f) above, may provide external disconnect services or answer readrequests.

Continuing with this example, with regard to (IV) above, the NVMetransport layer, this layer may include: (a) initiator functionalitythat may listen for local WWPNs and/or remote WWPNs, may connect tolocal WWPNs and/or remote WWPNs, and may send commands or data, receivedata, requests for data, and responses, and disconnect; and (b) targetfunctionality.

Turning toward FIG. 7, as noted above, FIG. 7 illustrates aspects ofselective communication protocol layering for synchronous replicationbetween one or more storage systems according to some embodiments of thepresent disclosure. More specifically, as part of an example embodimentof selective communication protocol layering, or a replication protocolor scheme, FIG. 7 illustrates an example method of a listen/get pathcontrol flow as part of a discovery process.

In some implementations, a storage system may listen for any pathchanges to a remote storage system, where if replication services areadded, a notification may be received for each impacted storage systemwithin the active cluster of storage systems.

Further, in some implementations, if any Fibre Channel switchconfiguration change impacts connectivity from a given storage system inan active cluster to any other storage system in the active cluster, acorresponding notification may be received for each impacted otherstorage system.

As illustrated in FIG. 7, establishing paths between storage systems tosupport bidirectional communication, where the bidirectionalcommunication may support replication, including synchronous replicationamong an active cluster of storage systems, may include: replication702, replication transport 704, NVMe discovery 706, and NVMe transport708.

In some implementations, given one or more new replication protocolidentifiers at the replication layer 702, where the replication protocolidentifier is depicted as remote identifier 712, the remote identifier712 is added 713 to a set of remote identifiers corresponding to a setof storage systems that may be included within an active cluster ofstorage systems replicating data among each other.

Continuing with this example, and as noted above with regard to(I)(a)(i) and (I)(a)(ii), the replication transport layer may listen fornew replication protocol identifiers, and given one or more replicationprotocol identifiers, the replication transport 704 may be queried 716to get paths for each of the one or more replication protocolidentifiers. Further, in this example, for each of the one or more paths717, a host, initiator, or storage system may connect 719 to eachrespective one or more storage system corresponding to each of therespective one or more replication protocol identifiers.

In some implementations, a host, storage system, or more generally, aninitiator computing device, may register 710 a host replication NQN witha discovery service. Further, a host, or storage system, may, as part ofa discovery process, receive new local/remote WWPNs for Fibre Channeladdressing 714. Similarly, as depicted, a listening or discovery processfor both NVMe and Fibre Channel may include connect requests 720 andcorresponding responses 721, fabric connect 722, host replication NQN,discovery NQN and corresponding responses 727, and get log page requests724 for NVMe discovery and corresponding responses 725 with therequested log pages with NVMe addressing information. However, in someexamples, a discovery process may proceed without receiving log pagerequests.

Further, continuing with this example, in response to receiving new NQNand WWPN information 726, an update to mapping information 727 may bemade, and given a new remote protocol identifier 728 obtained fromparsing the new NQN, a new round of connecting may beperformed—including, getting path information 730, checking mappinginformation 731, and, connecting for each of the new paths 732. However,in some examples, a discovery process may proceed without receiving newNQN and WWPN information. Further, in some examples, even if a protocolidentifier 728 is not new, a corresponding notification is processedbecause a path may have changed.

In short, a listening process on a host or initiator storage system mayobtain NVMe and Fibre Channel addressing information for storage systemsthat may become part of an active cluster of storage systems replicatinga dataset among themselves, and where the host or initiator storagesystem may continually listen for and update path and connectioninformation.

For further explanation, FIG. 8 illustrates aspects of selectivecommunication protocol layering for synchronous replication between oneor more storage systems according to some embodiments of the presentdisclosure. More specifically, as part of an example embodiment ofselective communication protocol layering, or a replication protocol orscheme, FIG. 8 illustrates an example method of a connect/accept controlflow.

As explained above with reference to FIG. 7, as storage systems comeonline or otherwise become available for storage use, a listen/get pathprocess may establish paths between the storage systems, where availablestorage systems may be presented for configuration or use. For example,a user at a storage system management console may be presented with oneor more storage options among the multiple storage systems, where a usermay specify objects, datasets, volumes, or other storage data forreplication among selected storage systems. In this example, given a setof storage systems, replication, or synchronous replication may beimplemented as described above with reference to FIGS. 6A-6B, and alsowithin the applications to which the present application draws priority.

In this example, given a path, where a path is obtained as describedabove with reference to FIG. 7, a storage system 803 may initiate aconnection 820 with another storage system 805. Further, in thisexample, the responding storage system 805 may respond 880 by preparingthe replication transport layer 814 to accept an incoming connectrequest—where selected steps of the replication protocol or schemeestablishing a connection are depicted in FIG. 8 and described below.

Continuing with this example, as described above with reference to thereplication protocol layer and remote client connector functionality,listed as (I)(b)(i)-(iii), given a list of paths, a storage system mayinitiate connections to one or more remote storage systems.

As described above, each storage system within an active cluster, oreach storage system that may join an active cluster, may implement areplication protocol or scheme that includes a replication layer, areplication transport layer, an NVMe initiator layer, and an NVMe targetlayer. In this example, storage systems (803, 805) include these layers,respectively depicted as replication (802, 816), replication transport(804, 814), NVMe init (806, 812), and NVMe target (808, 810).

Overall, depicted in FIG. 8 are replication protocol exchanges forestablishing—for each of one or more paths to one or more storagesystems—bidirectional communication channels between storage systemsbased on selected aspects of underlying protocols. In this example, aresult of establishing bidirectional communication between the storagesystems 803, 805 is that each respective storage system 803, 805 willhave a respective endpoint object 821, 881 usable for replication ofdata between the storage systems 803, 805, including synchronousreplication of data.

More specifically, in this example, a storage system may initiate adiscovery process and receive a list of NVMe qualified names (NQNs),where each NQN may be formatted to include both standard NVMe addressinginformation and a replication protocol identifier. As noted above, areplication protocol identifier may be independent of the underlyingprotocols, including NVMe and Fibre Channel, where the replicationprotocol identifier may be used to identify storage systems that may beincluded within an active cluster.

While storage systems, in some examples, may initiate a Fibre Channeldiscovery process upon storage system startup, or a reboot, where theFibre Channel discovery process may make the storage system aware ofother storage systems in a network, replication protocol identifiers maybe used to identify other storage systems and storage pools forreplication between the storage systems.

In some examples, a user may specify a set of storage systems that maybe included within a set of storage systems in an active cluster, ormore generally a user may specify storage systems that may be configuredto bidirectionally replication data. For example, a user may specify afirst storage system to be in a replication relationship with a secondstorage system, and in response, the first storage system may make arequest over an IP network to the second storage system requesting thereplication protocol identifier for the second storage system.

In this way, in this example, a given storage system may use replicationprotocol identifiers to determine which one or more other storagesystems may be configured as part of a replication relationship, orwhich other one or more storage system may be configured tosynchronously replicate data. Further, as described above, based on thereplication protocol identifier, a corresponding storage system may beaddressed without use of world wide port names (WWPNs) at the FibreChannel layer.

In this example, a storage system 803 that initiates a connection may bereferred to as an active side storage system, and a storage system 805that responds to the connection request may be referred to as a passiveside storage system. In this example, storage system 803, the activeside storage system may issue an initial connect request to establishcommunication from storage system 803 to storage system 805.

Further, in this example, in response to the connect request fromstorage system 803, storage system 805 may connect to storage system803—where bidirectional communication may be established based onsuccessfully establishing communication channels from storage system 803to storage system 805 and from storage system 805 to storage system 803.Given establishment of bidirectional communication between storagesystem 803 and storage system 805, the storage systems 803, 805 areconfigured to replicate data, including synchronously replicate data.

In general, active storage systems may listen for paths to storagesystems with replication protocol identifiers that may be included in areplication relationship or active cluster, and initiate establishingbidirectional communication channels to support data replication.Further, in some examples, active storage system may also specify datato be replicated in the replication relationship, including specifyingone or more datasets, volumes, objects, or other specified forms ofstorage content.

Continuing with this example, in response to, at the replication layer,discovering a new path 820, or an updated path, storage system 803 mayinitiate establishing a connection to connect 822 to the storage systemcorresponding to the new or updated path 820, which in this example isstorage system 805. In this example, in response to the connect 822request, a determination 823 is made as to whether an administrativequeue is currently established for storage system 805, where if there isno current administrative queue for storage system 805, then anadministrative connect request 824 is sent to storage system 805.Further, in this example, in response to the administrative connectrequest 824, storage system 805 may set 827 storage system 803 as a hostsystem for providing data for storage.

Continuing with this example, in response to storage system 805receiving the administrative connect request 824, storage system 805 mayrespond 826 to storage system 803 to establish the administrative queue.

Further, in addition to establishing an administrative queue, storagesystem 803 also sends an I/O connect request 828 to storage system 805to establish I/O queues to hold data to be transferred from storagesystem 805 to storage system 803. Continuing with this example, inresponse to storage system 805 receiving the I/O connect request 828,storage system 805 may respond 830 to storage system 803 to establishone or more I/O queues on storage system 803. Further, in this example,in response to storage system 805 receiving the I/O connect request 828,storage system 805 may determine that the connection 829 on the targetside, storage system 805, in this case, is complete. As discussed abovewith reference to FIGS. 4A-5, read operations may be made more efficientby pre-allocating buffer space to reduce a number of messages needed totransfer data between storage system 803 and storage system 805.

In this example, based on establishing the administrative queue and theone or more I/O queues on storage system 803, data may be transferredfrom storage system 805 to storage system 803, and a connection 831 fromthe direction of storage system 805 to storage system 803 may beconsidered established.

Continuing with this example, in accordance with the replicationprotocol or scheme, in response to the connection 822 request fromstorage system 803, and as part of the operations performed in responseto storage system 805 preparing to send data to storage system 803, andin response to a connection being formed based on the connectioncomplete 829 notification, storage system 805 may initiate a connection832 from the direction of storage system 805 to storage system 803.

In this example, in response to the connect 832 request, a determination833 is made as to whether an administrative queue is currentlyestablished for storage system 805, where if there is no currentadministrative queue for storage system 803, then an administrativeconnect request 834 is sent to storage system 803.

Continuing with this example, in response to storage system 803receiving the administrative connect request 834, storage system 803 mayrespond 836 to storage system 805 to establish the administrative queue.Further, in this example, in response to the administrative connectrequest 834, storage system 803 may set 835 storage system 805 as a hostsystem for providing data for storage.

Further, in addition to establishing an administrative queue, storagesystem 805 also sends an I/O connect request 838 to storage system 803to establish I/O queues to hold data to be transferred from storagesystem 805 to storage system 803. Continuing with this example, inresponse to storage system 803 receiving the I/O connect request 838,storage system 803 may respond 840 to storage system 805 to establishone or more I/O queues on storage system 805. Further, in this example,in response to storage system 803 receiving the I/O connect request 838,storage system 803 may determine that the connection 839 on the targetside, storage system 803, in this case, is complete.

In this example, based on establishing the administrative queue and theone or more I/O queues on storage system 805, data may be transferredfrom storage system 803 to storage system 805, and a connection 841 fromthe direction of storage system 803 to storage system 805 may beconsidered established.

In this way, given establishment of communication in both directionsbetween storage system 803 and storage system 805, respective endpoints821, 881 may be considered established, as described above withreference to the replication transport layer, described above withreference to (II)(b)(i)-(v).

For further explanation, FIG. 9 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure. Alsodepicted in this example are an additional storage system (950) and acomputer system (952). The storage systems (900, 950) may implement datastorage features described above with reference to FIGS. 1A-1D, 2A-2G,3A, 3B, and 4A-8, as the storage systems (900, 950) may include some orall of the components described in the above Figures.

In some implementations, storage systems may implement multipledifferent replication schemes between themselves, where the differentreplication schemes are based on a common management model forimplementing the replication scheme and the replication transport. Insome implementations, the common management model is also a basis thatallows the storage systems to switch from one type of replication schemeor replication transport to a different type of replication scheme orreplication transport because a same common management model is used tosupport the different allowed combinations of replication schemes andreplication transports.

Further, in some implementations, communication links between storagesystems over which replication data and administrative data iscommunicated between storage systems may be established over differenttypes of underlying physical media layers. For example, a given storagesystem may include multiple different types of network ports thatsupport different types of networking protocols, such as Fibre Channel,TCP/IP, NVMe over Fabrics, InfiniBand, among any other standardnetworking protocols.

In this way, in some implementations, a cluster of storage systems mayestablish one or more different replication schemes among themselves,and responsive to various conditions, the storage systems may switchbetween different replication schemes without any interruption in areplication relationship among the storage systems—where the continuousoperation may be based on the different replication schemes using acommon management model for data replication. In some implementations, areplication relationship between two storage systems may includesimultaneous operation of several replication transports over multiplecommunication links operating on multiple, different underlying physicalmedia layers.

Further, in some implementations, a common management model may specifycommunication operations that are encapsulated from the transportmechanisms of a particular network messaging layer. For example, thecommon management model may provide communication operations that areused by a given replication scheme, where the communication operationsdo not require specification of details regarding operations of amessaging layer such as a network transport layer. However, in otherexamples, a common management model may specify communicationoperations, or network operations, that have more or less visibilityinto the transport mechanisms of a given network transport layer.

Continuing with this example implementation, based on the commonmanagement model not specifying communications between storage systemsat a protocol stack layer that is lower than a network transport layer,storage systems may in addition to switching between differentreplication schemes or instead of switching between differentreplication schemes—switch between different network ports implementingdifferent types of network transport protocols for different types ofunderlying physical networks.

In other words, in some implementations, because multiple networkprotocol stacks for a replication scheme are concurrently supported bythe common management model, the common management model may continuewith an existing replication scheme or switch to a different replicationscheme without any awareness of the physical transport mechanisms usedto communicate the replication data or administrative data.

In short, in some implementations, the common management model mayprovide a consistent, and uniform interface to disparate, or different,underlying network messaging mechanisms. For example, among multiplenetwork ports of a given storage system, one network port may beconnected to a TCP/IP network, and another network port may be connectedto a Fibre Channel network. Similarly, additional network ports mayprovide support for additional communication links in accordance withone or more underlying network messaging mechanisms.

In some implementations, based on having a storage system configured toestablish multiple communication links over different underlyingphysical networks, a storage system may continue to operate a givenreplication scheme over a first network while simultaneously performingother storage system functions without disrupting the data replication.

For example, a first storage system may be implementing a firstreplication scheme to establish a replication relationship with a secondstorage system over a first network port and first network, andsimultaneously implement a second replication scheme to establish areplication relationship with a third storage system (or in some caseswith the same second storage system) over a second port and secondnetwork.

Continuing with this example, a storage system management service mayissue a storage system management command that is received by the firststorage system, where the storage system management command indicatesinitiation of a storage system upgrade. In this example, the firststorage system, in response to the upgrade command, may suspend datareplication for a network port to be used for the storage systemupgrade.

In this way, in this example, a storage system may continue datareplication using one or more replication schemes with another storagesystem while simultaneously performing a storage system upgrade—wherethe data replication between the storage systems continues withoutdisruption from the storage system upgrade.

In some implementations, a storage system may upgrade from componentsdesigned for one mechanism for replication communications to componentsdesigned for a different mechanism for replication communications. Asone example, a storage system may transition or upgrade from beingconfigured for multiple ethernet ports for replication communications toalso including ports for using Fibre Channel for replication, where insome cases, the Fibre Channel port may replace an existing network port,such as an ethernet port. Continuing with this example, responsive to anupgrade or addition of the Fibre Channel port, a replication scheme mayswitch from using replication transport mechanisms reliant on ethernetto replication transport mechanisms reliant on Fibre Channel—where thereplication scheme may transition from using one replication transportmechanism to using a different replication transport mechanism withoutdisrupting replication of a dataset that is being replicated using asame replication scheme. In this way, in this example, an upgrade oraddition may be tested prior to use, and where switching the replicationscheme over to using the upgraded or added network mechanism does notdisrupt the operation of the replication scheme.

As part of such a transition from one network port or network transportmechanism to another network port or network transport mechanism, asecond, new, network link (such as a new port or a new network transportmechanism) can be configured to run in parallel with a first, prior,network link (such as a prior port or a new network transport mechanism)that preceded the transition. Use of the second network link can be thenbe tested by sending messages over the second link as well as over thefirst link. Messages sent over the second link could be some fraction ofthe total messages associated with replication, or they could be testmessages, or they could be duplicates of messages sent over the firstlink. Measurements of these messages can then determine that the newnetwork link is adequate to ensure that replication can complete thetransition, such as by determining that a combination of networkbandwidth, latency, packet loss, CPU overhead, or other factors isadequate for replication to continue without the presence of the first,prior, network link. Once that second network link is proved out, use ofthe first network link can be discontinued.

It should be noted that these transitions may have to happen in parallelon a first and a second storage system that have a replicationrelationship. As a result, two storage systems with such a replicationrelationship may need to coordinate upgrade of components, configuringof new network links, testing of new network links, and finalizing thetransition from a first, prior, network link to a second, new, networklink.

In some implementations, the depicted computer system (952) may beimplemented by a storage system, as described in the above FIGS. 1A-8.However, in other examples, the computer system (952) may be implementedby any computing device, including mobile devices, desktop computers, orservers.

Further still, in other implementations, the depicted computer system(952) may be a virtual computing instance, such as a compute node, orcompute instance within a cloud computing environment. For example, thecomputer system (952) may be a virtual computer system implementedwithin a cloud computing environment, such as the cloud computingenvironment escribed with reference to FIGS. 3A-3D.

Continuing with this example, the virtual computer system (952) may beimplemented as part of a storage system management service within acloud storage system management service. In this example, the cloudstorage system management service may manage one or more of the storagesystems (900, 950), including monitoring the status and health of thestorage systems (900, 950) and providing updates or configurationchanges to the storage systems (900, 950).

In some implementations, each storage system (900, 950) may supportrespective implementations of multiple, distinct types of replication.In some examples, distinct replication schemes may include, among othersnot listed, synchronous replication, nearly synchronous replication,asynchronous replication, configurable asynchronous replication,snapshot-based replication, continuous data replication, periodicreplication, or a combination of configurable asynchronous datareplication and dynamically determined snapshot updates. Examples ofvarious ones of these replication schemes are described above withreference to FIGS. 4A-8.

In some implementations, the above-listed replication schemes may beimplemented based on a common or uniform management model, where thecommon management model includes a same or similar metadata model forrepresenting stored data, such as the metadata representation describedabove with reference to FIG. 4B. For example, in some implementations, agiven storage system may use each of the above-listed replicationschemes to establish a replication relationship among one or more otherstorage systems, where implementation of a replication schemes is basedon a management model that is common to all storage systemsparticipating in a replication relationship, where the common managementmodel may be used to implement each of the above-listed replicationschemes.

In some implementations, while each storage system may implement acommon management model, in some examples, each storage systemparticipating in the replication relationship may have its own copy of adataset being replicated, and a respective management modelspecification of internal management of a metadata model and relevantdata structures for defining storage objects, for mapping objects tophysical storage, for deduplication, for defining the mapping of contentto snapshots, and so on.

In some implementations, each of the different replication schemes, witheach respective different manner in which replication is achieved, atsome point communicate data or administrative information across anetwork or communication fabric from one storage system to another oneor more storage systems.

In other words, in some implementations, a given replication schemeamong the above-listed replication schemes may specify networking orcommunication operations that specify communications between differentstorage systems. However, continuing with this example implementation,the given replication scheme may not specify any implementation detailsregarding physical media layers of a network stack, such as a networklayer, a data link layer, or a physical layer. In some examples, suchencapsulation disentangles any given replication scheme from being awareof network transport mechanisms, which serves as a basis for switchingbetween replication transport mechanisms without any disruption toreplication schemes. However, some replication transport mechanisms mayonly support some replication schemes; for example, synchronousreplication may be supported by a low-latency, low-overheadcommunication mechanism, such as NVMe over fabric, NVMe over FC, or SCSIover FC.

In this way, continuing with this example implementation, for any of theabove-listed replication schemes, sending or receiving data between afirst storage system (900) and a second storage system (950) isimplemented similarly whether the media layer beneath the networkmessaging layer is a Fibre Channel network, a TCP/IP network, or anyother type of physical network, including wireless networks.

Consequently, in some implementations of replication handling amongdistinct networks, whether a storage system is implementing asynchronousreplication, synchronous replication, or some other replication scheme,the replication scheme specifications are the same for communicationwith another storage system.

In some implementations, one or more storage controllers may manage eachof multiple replication relationships, from a given storage system toone or more other storage systems, where each replication relationshipmay be implemented over a respective network and corresponding networkprotocol layer. Example storage system controllers are described ingreater detail above with reference to FIGS. 1A-3D.

In some implementations, behavior of a replication relationship betweenstorage system may be specified by a replication policy. For example, areplication policy may be considered a management object that specifiesbehaviors, rules, and/or characteristics between storage systems.Further, in some examples, a replication policy may specify a sourcestorage system as a source for data and one or more target storagesystems as a target for replication data.

Further still, in some examples, a replication policy may specifystorage data to be replicated, checkpoint information, a metadatarepresentation for the storage data to be replicated, and/or metadatalogs or metadata journals. In some examples, a source of data may bespecified as a volume, a structured or unstructured dataset, a bucket, afile within a file system, an entire file system directory, or as acombination of sources of data.

Further, in some implementations, a replication policy may specifyconditions or rules that determine each condition or rule for modifyingthe behavior of a replication scheme, switching between replicationschemes, both modifying behavior or a replication scheme and switchingbetween different networks, or both switching between replicationschemes and switching between different networks.

In some implementations, for example, a replication policy may specifythat if a Fibre Channel network is available between storage systems,then an initial replication scheme to use between the storage systemsmay be a synchronous replication scheme. Further, in this example, thereplication policy may specify that the synchronous replication schemecontinues unless there are changes to the health of the network orchanges to available bandwidth.

However, in other examples, the replication policy may specify that inresponse to synchronizing a dataset with a synchronous replicationscheme, that the replication scheme switch to a different replicationscheme, such as asynchronous replication, snapshot-based replication, orany of the other above-listed replication schemes.

In some implementations, as another example, a replication policy mayspecify that if a TCP/IP network is available, then an initialreplication scheme to use between storage systems may be an asynchronousreplication scheme or a near synchronous replication scheme. Further, inthis example, the replication policy may specify that if a Fibre Channelnetwork becomes available, then the replication policy switch to asynchronous replication policy and also switch to using the FibreChannel network.

In some implementations, a replication policy may specify replicationbalancing among different networks to different storage systems. Forexample, if a first storage system is connected to a second storagesystem over both Fibre Channel and IP, and if the first storage systemis connected to a third storage system only over IP, then thereplication policy may specify that a network balancing that includesdistributing, if possible, replication relationships among multipledifferent storage systems among multiple different networks.

In this example, the replication policy, to avoid replicating data toboth the second storage system and the third storage system over a sameIP network, the replication policy may specify that the replicationscheme between the first storage system and the third storage system useIP, and specify that the replication scheme between the first storagesystem and the second storage system use a different network, ifavailable, which in this case, a Fibre Channel network is available, sothe replication scheme between the first storage system and the secondstorage system is specified to use the Fibre Channel network.

Continuing with this example, in addition to determining how todistribute which replication scheme among the available networks todifferent storage systems, the replication policy may further specify,given a selection of networks to use between storage systems, which ofthe replication schemes to use among the selection of networks to theother storage systems. In this example, the selection of replicationscheme may be carried out similarly to the above-listed examples.

In some implementations, a replication policy may specify conditions orrules based on underlying network health or underlying bandwidthcharacteristics. For examples, if network behavior changes, or if thereare indications of a degradation of network health, or indications of apossible network outage, then the replication policy may switch from acurrent replication scheme to a lower bandwidth intensive replicationscheme.

In other examples, a replication policy may specify that in response toindications of a degradation of network health, or indications of apossible network outage, then the replication policy may switch fromusing a current network for a current replication scheme to using adifferent network for a same replication scheme or to using a differentnetwork and switching to a different replication scheme.

In some implementations, in addition to or instead of responding tonetwork health by switching networks, a replication policy may specifyresponses to changes in network loads or network bandwidth availability.For example, a replication policy may specify that in response tonetwork bandwidth availability that drops below a specified threshold, areplication scheme—without switching networks or switching betweenmessaging layers—switch from a current replication scheme to areplication scheme that uses less network bandwidth. For example, thereplication policy may specify a switch from using synchronousreplication to snapshot-based replication, or some other type of lowerbandwidth consumption replication scheme.

In some implementations, in addition to or instead of responding tonetwork health by switching networks, a replication policy may specifyresponses to changes in network loads or network bandwidth availability.For example, a replication policy may specify that in response tonetwork bandwidth availability that drops below a specified threshold,to switch from a current network for a current replication scheme to adifferent network, where the switch to the different network maycontinue with a same replication scheme or also include switching to adifferent replication scheme. In this example, if the switch includesswitching replication schemes, the selection of a different replicationscheme may be carried out as described above.

Further, in some implementations, each storage system participating in areplication relationship according to any of the above replicationschemes may implement a shared, or common management model thatspecifies a metadata representations, implementation model, orpersistent data structures for implementing each of the abovereplication schemes.

As one example implementation of switching between replication schemesthat use pods, a replication relationship between two storage systems(900, 950) may be switched from a relationship where data isasynchronously replicated to a relationship where data is synchronouslyreplicated. For example, if a first storage system (900) is configuredto asynchronously replicate a dataset to a second storage system (950),then creating a pod that includes the dataset, the first storage system(900) as a member, and the second storage system (950) as a member canswitch the relationship where data is asynchronously replicated to arelationship where data is synchronously replicated.

Similarly, continuing with this example, through the use of pods, thereplication relationship between two storage systems may be switchedfrom a relationship where data is synchronously replicated to arelationship where data is asynchronously replicated. For example, if apod is created that includes the dataset, where the pod includes thefirst storage system (900) as a member and includes the second storagesystem (950) as a member, then by unstretching the pod (to remove thefirst storage system (900) as a member or to remove the second storagesystem (950) as a member), a relationship where data is synchronouslyreplicated between the storage systems can immediately be switched to arelationship where data is asynchronously replicated. In this way, insome implementations, storage systems (900, 950) may switch back andforth as needed between asynchronous replication and synchronousreplication.

Further, in this example, switching may be facilitated by theimplementation relying on similar techniques for both synchronous andasynchronous replication. For example, if resynchronization for asynchronously replicated dataset relies on the same or a compatiblemechanism as is used for asynchronous replication, then switching toasynchronous replication is conceptually identical to dropping thein-sync state and leaving a relationship in a state similar to a“perpetual recovery” mode. Likewise, switching from asynchronousreplication to synchronous replication can operate conceptually by“catching up” and becoming in-sync just as is done when completing aresynchronization with the switching system becoming an in-sync podmember.

In some implementations, alternatively, or additionally, given that bothsynchronous and asynchronous replication rely on similar or identicalcommon metadata (or a common model for representing and identifyinglogical extents or stored block identities, or a common model forrepresenting content-addressable stored blocks) these aspects ofcommonality can be leveraged to dramatically reduce the content that mayneed to be transferred when switching to and from synchronous andasynchronous replication.

Further, in some implementations, if a dataset is asynchronouslyreplicated from a first storage system (900) to a second storage system(950), and the second storage system (950) further asynchronouslyreplicates that data set to a third storage system (not depicted), thena common metadata model, common logical extent or block identities, orcommon representation of content-addressable stored blocks, maydramatically reduce the data transfers needed to enable synchronousreplication between the first storage system (900) and the third storagesystem.

Turning toward FIG. 9, the flowchart illustrates a method forreplication handling among distinct networks in accordance with someembodiments of the present disclosure.

The example method depicted in FIG. 9 includes: establishing (902), overa first type of network messaging layer (960), a communication link fora replication scheme between a first storage system (900) and a secondstorage system (950); initiating (904), over a second type of networkmessaging layer, a configuration change to one or more aspects of thefirst storage system (900); and replicating (906), without disruptingthe configuration change to the one or more aspects of the first storagesystem (900), data (970) from the first storage system to the secondstorage system.

Establishing (902), over the first type of network messaging layer(960), a communication link for a replication scheme between a firststorage system (900) and a second storage system (950) may be carriedout using multiple techniques. For example, as described above withreference to FIGS. 4A-8, a communication link may be established using anetwork messaging layer from a standard network protocol, such as FibreChannel, TCP/IP, NVMe over Fabrics, among others. In other examples, acommunication link may be established based on selective protocollayering, such as described above with reference to FIGS. 7 and 8. Asdiscussed above, the network messaging layer may be a network transportlayer.

Further, in this example, and as described above, a replication policymay specify conditions, rules, and/or criteria on which to base aselection of an available network type and corresponding network port touse. Further still, in this example, a replication policy may specifyconditions or criteria on which to base a selection of the replicationscheme to use. In some examples, a replication policy may be associatedwith a respective dataset to be replicated, where the dataset may be anytype of organization of data, as described above.

Initiating (904), over a second type of network messaging layer (964), aconfiguration change to one or more aspects of the first storage system(900) may be carried out using multiple techniques. For example, aremote computer system (952) may have automated configuration managementsoftware, or provide an administrator with a storage system managementconsole, where the administrator or the configuration managementsoftware may issue an update that carries out a configuration change toone or more aspects of the storage system (900) software, or firmware,or both. In other examples, configuration management software may beimplemented within a cloud computing environment, or where anadministrator accesses a storage system management console via a cloudservices provider.

Further, in this example, the second type of network messaging layer(964) may be implemented as part of a network protocol that operatesover a network accessible by a network port that is distinct from anetwork port that provides access to a different network over which thefirst type of networking messaging layer (960) operates.

Replicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system may be carried outas described above. For example, the first storage system (900) may,given an established communication link over which a replication schememay operate, replicate data (970) to the other storage system (950) inaccordance with the replication scheme using a messaging layer (960)that is independent and distinct from the messaging layer (964) overwhich the configuration change is transmitted from the computer system(952) to the storage system (900).

For further explanation, FIG. 10 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 10 is similar to the example methoddepicted in FIG. 9 in that the example method depicted in FIG. 10includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 10 further specifies thatinitiating (904), over a second type of network messaging layer, aconfiguration change to one or more aspects of the first storage system(900) includes upgrading (1006) one or more software components on thefirst storage system (900). Further, the example method in FIG. 10 alsoincludes: replicating (1002), over a second communication link betweenthe first storage system (900) and the second storage system (950), aportion (1052) of a dataset, where the communication link over the firsttype of network messaging layer is a first communication link;interrupting (1004) replication over the second communication link toinitiate the configuration change; establishing (1008), based on theupdated one or more software or hardware components, a thirdcommunication link between the first storage system (900) and the secondstorage system (950); and replicating (1010), over the thirdcommunication link, additional portions (1054) of the dataset, wherereplication over the third communication link uses a type of networkmessaging layer (1060) that is different from the first type of networkmessaging layer.

In this example, a dataset (1050) being replicated among the storagesystem (900, 950), may include multiple portions of data (970, 1052,1054), where the multiple portions of data may be transmitted alongmultiple communication links and corresponding messaging layers.Further, in this example, as described in greater detail below,replication along one of the communication links may be interrupted toupgrade the storage system (900) to be able to use a different type ofnetwork messaging layer, where replication of the dataset (1050) maycontinue after the upgrade via a communication link that uses the newtype of messaging layer.

Replicating (1002), over a second communication link between the firststorage system (900) and the second storage system (950), a portion(1052) of the dataset, where the communication link over the first typeof network messaging layer is a first communication link may be carriedout similarly as described above with reference to replicating (906),data (970) from the first storage system (950) to the second storagesystem. In some examples, the second communication link—prior toupgrading (1006) may be over a same type of network messaging layer(960) as the first communication link. As one example, the networkmessaging layer (960) used by both the first and second communicationlinks may be Ethernet, where the upgraded network messaging layer may beFibre Channel; however, any messaging layer protocols described abovemay correspond to the initial and/or upgraded components forestablishing a network communication protocol and network messaginglayer. In this example, replicating (1002) may be performed prior toinitiating (904) the configuration change.

Interrupting (1004) replication (1002) over the second communicationlink to initiate (904) the configuration change may be carried out bythe replication scheme responding to a command from a storage controllerto suspend replication.

Upgrading (1006) one or more software components on the first storagesystem (900) may be performed by the storage system (900) receiving,over a communication link that uses a particular network protocol and acorresponding network messaging service (964), a command or instructionthat specifies an update or upgrade to storage system (900) software,firmware, or both software and firmware. As noted above, thecommunication link between the storage system (900) and the computersystem (952) operates over a network, and corresponding protocol stackincluding the messaging layer (964), that is distinct and independent ofthe communication link over a different network, and correspondingprotocol stack that includes the messaging layer (960).

Continuing with this example, and given the independence of the networksand communication links between the first storage system (900) and thesecond storage system (950) and between the first storage system (900)and the computer system (952), the upgrade (1002) issued by the computersystem (952) to the first storage system (900) may occur simultaneouslywith replication of data (970) between the first storage system (900)and the second storage system. Further, based on this independence, theupgrade (1002) may occur without disrupting the replication relationshipand the replication of data between the first storage system (900) andthe second storage system (950).

Establishing (1008), based on the updated one or more software orhardware components, a third communication link between the firststorage system (900) and the second storage system (950) may be carriedout similarly to establishing (902) the first communication link betweenthe first storage system (900) and the second storage system (950),where the difference is in the type of network communication protocoland network messaging layer established, and where details of thenetwork communication protocols and network messaging layers aredescribed above. In this example, establishing (1008) the thirdcommunication link may be performed subsequent to initiating (904) theconfiguration change.

Replicating (1010), over the third communication link, additionalportions (1054) of the dataset, where replication (1010) over the thirdcommunication link uses a type of network messaging layer that isdifferent from the first type of network messaging layer may be carriedout similarly to replicating (906) data from the first storage system(900) to the second storage system (950), where the difference is in thetype of network communication protocol and network messaging layer usedfor the third communication link. In this example, replicating (1010)the additional portions (1054) of the dataset may be performedsubsequent to initiating (904) the configuration change.

In this way, in this example, replication between the first and secondstorage systems (900, 950) may continue without disruption overmultiple, distinct communication links, and corresponding networkcommunication layers, even as some of the communication links among themultiple communication links may be interrupted for upgrades—and wherereplication may continue among all communication links subsequent to theupgrades.

For further explanation, FIG. 11 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 11 is similar to the example methoddepicted in FIG. 9 in that the example method depicted in FIG. 11includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 11 further includes:determining (1102) whether requirements for a replication scheme aresatisfied by network characteristics of a first network providing thefirst type of network messaging layer (960); determining (1104) whetherrequirements for the replication scheme are satisfied by networkcharacteristics of a second network providing the second type of networkmessaging layer (964); and selecting (1106), based on the requirementsfor the replication scheme begin satisfied by the networkcharacteristics of the first network, the replication scheme between thefirst storage system (900) and the second storage system (950) to be afirst replication scheme among a plurality of replication schemes.

Determining (1102) whether requirements for a replication scheme aresatisfied by network characteristics of a first network providing thefirst type of network messaging layer (960) may be carried out byreferencing a replication policy for the data (970) or dataset beingreplicated and identifying one or more requirements for supporting thereplication scheme and comparing to the network characteristics. Forexample, the replication policy may specify that for the replicationscheme, say synchronous replication, that round trip travel time forcommunication to the second storage system (950) be under a specifiednumber of microseconds, or that a specified quantity of bandwidth needsto be available, or that a specified level of network reliability mustbe provided, or other characteristics of metrics of an underlyingnetwork. For example, different networks, such as Fibre Channel or otherlisted above, may specify metrics for network messaging and supportednetwork bandwidths.

Continuing with this example, given the replication scheme requirements,and given the network characteristics, a determination may be made as towhether each of the replication scheme requirements are satisfied by thenetwork characteristics of the first network.

Determining (1104) whether requirements for the replication scheme aresatisfied by network characteristics of a second network providing thesecond type of network messaging layer (964) may be carried out byreferencing the replication policy for the data (970) or dataset beingreplicated and identifying one or more requirements for supporting thereplication scheme and comparing to the network characteristics. Forexample, as noted above, the replication policy may specify that for thereplication scheme, say synchronous replication, that round trip traveltime for communication to the second storage system (950) be under aspecified number of microseconds, or that a specified quantity ofbandwidth needs to be available, or that a specified level of networkreliability must be provided, or other characteristics of metrics of anunderlying network. Given the replication scheme requirements and giventhe network characteristics, a determination may be made as to whethereach of the replication scheme requirements are satisfied by the networkcharacteristics of the second network.

Selecting (1106), based on the requirements for the replication schemebegin satisfied by the network characteristics of the first network, thereplication scheme between the first storage system (900) and the secondstorage system (950) to be a first replication scheme among a pluralityof replication schemes may be carried out by using the determinations(1102, 1104) of whether the replication scheme is satisfied by the firstnetwork or the second network—where the network that satisfies, or bestsatisfies, the replication scheme requirements may be selected as thenetwork for the replication scheme.

For further explanation, FIG. 12 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 12 is similar to the example methoddepicted in FIG. 11 in that the example method depicted in FIG. 12includes: determining (1102) whether requirements for a replicationscheme are satisfied by network characteristics of a first networkproviding the first type of network messaging layer (960); determining(1104) whether requirements for the replication scheme are satisfied bynetwork characteristics of a second network providing the second type ofnetwork messaging layer (964); establishing (902), over a first type ofnetwork messaging layer (960), a communication link for a replicationscheme between a first storage system (900) and a second storage system(950); initiating (904), over a second type of network messaging layer,a configuration change to one or more aspects of the first storagesystem (900); and replicating (906), without disrupting theconfiguration change to the one or more aspects of the first storagesystem (900), data (970) from the first storage system to the secondstorage system.

However, the example method depicted in FIG. 12, in contrast to theexample method depicted in FIG. 11, which includes selecting (1106) thereplication scheme among a plurality of replication schemes, the examplemethod in FIG. 12 includes: selecting (1202), based on requirements fora second replication scheme being satisfied by the networkcharacteristics of the second network, a second replication schemebetween the first storage system (900) and a third storage system(1250), where the second replication scheme is among a plurality ofreplication schemes.

Selecting (1202), based on requirements for a second replication schemebeing satisfied by the network characteristics of the second network, asecond replication scheme between the first storage system (900) and athird storage system (1250) may be carried out similarly to selecting(1106) the replication scheme between the first storage system (900) andthe second storage system (950).

For further explanation, FIG. 13 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 13 is similar to the example methoddepicted in FIG. 12 in that the example method depicted in FIG. 13includes: selecting (1202), based on requirements for a secondreplication scheme being satisfied by the network characteristics of thesecond network, a second replication scheme between the first storagesystem (900) and a third storage system (1250); establishing (902), overa first type of network messaging layer (960), a communication link fora replication scheme between a first storage system (900) and a secondstorage system (950); initiating (904), over a second type of networkmessaging layer, a configuration change to one or more aspects of thefirst storage system (900); and replicating (906), without disruptingthe configuration change to the one or more aspects of the first storagesystem (900), data (970) from the first storage system to the secondstorage system.

However, the example method depicted in FIG. 13 further includes:establishing (1302), over the second type of messaging layer (964), acommunication link for the second replication scheme between the firststorage system (900) and a third storage system (1250); andsimultaneously replicating (1304), over respective network messaginglayers (960, 964), data (970) from the first storage system (900) toboth the second storage system (950) and the third storage system(1250).

Establishing (1302), over the second type of messaging layer (964), acommunication link for the second replication scheme between the firststorage system (900) and a third storage system (1250) may be carriedout similarly to establishing (902), over a first type of networkmessaging layer (960), a communication link for a replication schemebetween a first storage system (900) and a second storage system (950),described above with reference to FIG. 9.

Simultaneously replicating (1304), over respective network messaginglayers (960, 964), data (970) from the first storage system (900) toboth the second storage system (950) and the third storage system (1250)may be carried out as described above.

For example, based on having the first storage system (900) configuredto establish multiple communication links over different underlyingphysical networks, such as different networks to the second storagesystem (950) and the third storage system (1250), the first storagesystem (900) may continue to replication data (970) to the secondstorage system (950) over a first network and a first type of messaginglayer (960) while simultaneously replicating data (970) from firststorage system (900) to the third storage system (1250) over a secondnetwork and a second type of messaging layer (964).

For further explanation, FIG. 14 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 14 is similar to the example methoddepicted in FIG. 13 in that the example method depicted in FIG. 14includes: establishing (1302), over the second type of messaging layer(964), a communication link for the second replication scheme betweenthe first storage system (900) and a third storage system (1250);establishing (902), over a first type of network messaging layer (960),a communication link for a replication scheme between a first storagesystem (900) and a second storage system (950); simultaneouslyreplicating (1304), over respective network messaging layers (960, 964),data (970) from the first storage system (900) to both the secondstorage system (950) and the third storage system (1250); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 14 includes interrupting(1402) replication between the first storage system (900) and the thirdstorage system (1250) to begin a configuration change.

Interrupting (1402) replication between the first storage system (900)and the third storage system (1250) to begin a configuration change maybe carried out by a storage controller, in response to receiving amessage indicating an update, suspending or interrupting replicationthat is occurring over the communication link between the first storagesystem (900) and the third storage system (1250). Further, in thisexample, after suspending the replication between the first storagesystem (900) and the third storage system (1250), the storage controllermay apply the configuration change specified in the update message.

For further explanation, FIG. 15 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 15 is similar to the example methoddepicted in FIG. 9 in that the example method depicted in FIG. 15includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 15 further includes:establishing (1502), over the second type of network messaging layer(964), a communication link for a second replication scheme between thefirst storage system (900) and the second storage system (950); andsimultaneously replicating (1504), over different network messaginglayers (960, 964), data (970) from the first storage system (900) to thesecond storage system (950) over the first type of network messaginglayer (960) and data (1570) from the first storage system (900) to thesecond storage system (950) over the second type of network messaginglayer (964).

Establishing (1502), over the second type of network messaging layer(964), a communication link for a second replication scheme between thefirst storage system (900) and the second storage system (950) may becarried out similarly to establishing (902) a communication link for thereplication scheme between the first storage system (900) and the secondstorage system (950)—where a difference is that the communication linkis established over a different messaging layer.

Simultaneously replicating (1504), over different network messaginglayers (960, 964), data (970) from the first storage system (900) to thesecond storage system (950) over the first type of network messaginglayer (960) and data (1570) from the first storage system (900) to thesecond storage system (950) over the second type of network messaginglayer (964) may be carried out based on having the first storage system(900) configured to establish multiple communication links overdifferent underlying physical networks, such as different networks tothe same second storage system (950)—where the first storage system(900) may continue to replication data (970) to the second storagesystem (950) over a first network and a first type of messaging layer(960) while simultaneously replicating data (1570) from first storagesystem (900) to the second storage system (950) over a second networkand a second type of messaging layer (964).

For further explanation, FIG. 16 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 16 is similar to the example methoddepicted in FIG. 9 in that the example method depicted in FIG. 16includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 16, in contrast to theexample method of FIG. 9, further includes: detecting (1602) a change innetwork characteristics of the first network supporting the firstcommunication link to the second storage system (950); and determining(1604) that the change in network characteristics fails to satisfy oneor more replication scheme requirements of the replication scheme.

Detecting (1602) a change in network characteristics of the firstnetwork supporting the first communication link to the second storagesystem (950) may be carried out by a diagnostic or monitoring processthat periodically, or in response to network events, gathers metrics andstatus information for a given network, such as the first network inthis example.

Determining (1604) that the change in network characteristics fails tosatisfy one or more replication scheme requirements of the replicationscheme may be carried out by comparing current networkcharacteristics—based on the changes detected (1602) above andreferencing a replication policy for the data (970) or dataset beingreplicated and identifying one or more requirements for supporting thereplication scheme and comparing to the current network characteristics.For example, the replication policy may specify that for the replicationscheme, say synchronous replication, that a specified network speed, orthat a specified quantity of bandwidth needs to be available, or that aspecified level of network reliability must be provided, or othercharacteristics of metrics of an underlying network.

For further explanation, FIG. 17 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 17 is similar to the example methoddepicted in FIG. 16 in that the example method depicted in FIG. 17includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900);replicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system; detecting (1602)a change in network characteristics of the first network supporting thefirst communication link to the second storage system (950); anddetermining (1604) that the change in network characteristics fails tosatisfy one or more replication scheme requirements of the replicationscheme.

However, the example method depicted in FIG. 17 further specifies thatresponsive to determining (1604) the change in network characteristicsfails to satisfy the one or more replication scheme requirements of thereplication scheme: selecting (1702), based on current networkcharacteristics after the change in network conditions and based on thecurrent network conditions satisfying requirements of a replacementreplication scheme, the replacement replication scheme from among aplurality of replication schemes.

Selecting (1702), based on current network characteristics after thechange in network conditions and based on the current network conditionssatisfying requirements of a replacement replication scheme, thereplacement replication scheme from among a plurality of replicationschemes may be carried out similarly to selecting (1202), based onrequirements for a second replication scheme being satisfied by thenetwork characteristics of the second network, a second replicationscheme between the first storage system (900) and a third storage system(1250), where the second replication scheme is among a plurality ofreplication schemes, described in FIG. 12.

For further explanation, FIG. 18 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 18 is similar to the example methoddepicted in FIG. 17 in that the example method depicted in FIG. 18includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900);replicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system; detecting (1602)a change in network characteristics of the first network supporting thefirst communication link to the second storage system (950); determining(1604) that the change in network characteristics fails to satisfy oneor more replication scheme requirements of the replication scheme; andresponsive to determining (1604) the change in network characteristicsfails to satisfy the one or more replication scheme requirements of thereplication scheme: selecting (1702), based on current networkcharacteristics after the change in network conditions and based on thecurrent network conditions satisfying requirements of a replacementreplication scheme, the replacement replication scheme from among aplurality of replication schemes.

However, the example method depicted in FIG. 18 further includes:establishing (1802), over a third type of network messaging layer(1850), a third communication link for the replacement replicationscheme between the first storage system (900) and the second storagesystem (950).

Establishing (1802), over a third type of network messaging layer(1850), a third communication link for the replacement replicationscheme between the first storage system (900) and the second storagesystem (950) may be carried out similarly to establishing (902), over afirst type of network messaging layer (960), a communication link for areplication scheme between a first storage system (900) and a secondstorage system (950), described above with reference to FIG. 9. As notedabove, the first storage system (900) may include multiple networkports, where each network port may support one or more networkingprotocols over one or more communication networks or fabrics, and whereeach networking protocol may correspond to a network protocol stack thatincludes a messaging layer.

For further explanation, FIG. 19 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

The example method depicted in FIG. 19 is similar to the example methoddepicted in FIG. 9 in that the example method depicted in FIG. 19includes: establishing (902), over a first type of network messaginglayer (960), a communication link for a replication scheme between afirst storage system (900) and a second storage system (950); initiating(904), over a second type of network messaging layer, a configurationchange to one or more aspects of the first storage system (900); andreplicating (906), without disrupting the configuration change to theone or more aspects of the first storage system (900), data (970) fromthe first storage system to the second storage system.

However, the example method depicted in FIG. 19, in contrast to theexample method of FIG. 9, further includes: determining (1902) that adataset being replicated from the first storage system (900) to thesecond storage system (950) is synchronized; and responsive to thedataset being synchronized (1904): switching (1904A) from the firstnetwork messaging layer to a third network messaging layer (1950), andswitching (1904B) from the replication scheme being a synchronousreplication scheme to the replication scheme being a near synchronousreplication scheme.

In this example, a replication policy associated with a dataset mayspecify conditions under which replication schemes may be switched to adifferent replication scheme. For example, initial synchronization of adataset may be network bandwidth intensive, and so a replication policymay select a Fibre Channel network for initially synchronizing thedataset. Further, in this example, the replication policy for thedataset may specify that in response to initially synchronizing thedataset, to switch to a different replication scheme and/or a differenttype of network transport mechanism.

Continuing with this example, in response to synchronizing thedataset—for example, in order to provide the Fibre Channel network toother bandwidth intensive replication scheme use—may switch thereplication scheme to a different network based on a replication policyspecifying balancing of network usage that includes specifying use oflower bandwidth networks or lower traffic replication schemes subsequentto the initial dataset being synchronized. Further, in some examples, inaddition to switching to a different network, and correspondingdifferent messaging layer, the replication scheme may also be switchedto a different replication scheme.

Determining (1902) that a dataset being replicated from the firststorage system (900) to the second storage system (950) is synchronizedmay be carried out using various techniques in accordance with aparticular replication scheme being used. For example, as describedabove with reference to a synchronous replication scheme synchronizing adataset (426) between multiple storage system (402, 404, 406) may useacknowledgement messages between storage system to indicate asynchronized dataset. In other examples, different replication schemesmay have respective mechanisms for determining when a dataset issynchronized, as described above with reference to FIGS. 4A-8.

Switching (1904A), in response to the dataset being synchronized (1904),from the first network messaging layer to a third network messaginglayer (1950) may be carried out by a storage controller suspendingreplication operations from the first storage system to the secondstorage system on a current network using a current first networkmessaging layer (960), and then establishing a communication link withthe second storage system (950) using a different network and a thirdnetwork messaging layer (1950). In this example, establishing thecommunication link may be carried out to establishing (902) acommunication link as described above with reference to FIG. 9.

Switching (1904B) from the replication scheme being a synchronousreplication scheme to the replication scheme being a near synchronousreplication scheme may be carried out by the storage controllersuspending the current synchronous replication scheme by completing anyoutstanding operations for the current synchronous replication schemewithout initiating new replication operations. In response to completingany current outstanding replication operations, the storage controllermay then initiate the asynchronous replication scheme over theestablished communication link described above with reference toswitching (1904A) between network messaging layers.

For further explanation, FIG. 20 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, two storage systems (2000, 2050) may establish areplication relationship in accordance with a given replication scheme,where the storage systems may use multiple different networks andcorrespondingly different network messaging mechanisms to simultaneouslyreplicate data.

Specifically, in the example method depicted in FIG. 20 includes astorage system (2000): establishing (2002), over a first type of networkmessaging layer (2062), a communication link for a first replicationscheme between a first storage system (2000) and a second storage system(2050); establishing (2004), over a second type of messaging layer(2060), a second communication link for a second replication schemebetween the first storage system and the second storage system (2050);and simultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050).

Establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050) may becarried out similarly to establishing (902) a communication link betweenstorage systems described above with reference to FIG. 9.

Establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050) may be carriedout similarly to establishing (902) a communication link between storagesystems described above with reference to FIG. 9.

Simultaneously replicating (2006), over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050) may be carried outsimilarly to simultaneously replicating (1304) data between a firststorage system and a second and third storage system. However, in thisexample, by contrast to simultaneous replication (1304) in FIG. 13 todifferent storage systems, the first storage system simultaneouslyreplicates data (2070, 2072) portions of the dataset (2052) to the samesecond storage system (2050) over different networks using differentnetwork messaging layers (2060, 2062).

For further explanation, FIG. 21 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, as described in FIG. 20, the two storage systems (2000,2050) have an established replication relationship in accordance with agiven replication scheme, where the storage systems may use multipledifferent networks and correspondingly different network messagingmechanisms to simultaneously replicate data.

However, in the example method of FIG. 20, a replication policy mayspecify responses to changes in network availability, where theresponses may include switching replication schemes and/or switching toa different network and corresponding network messaging mechanism.

Specifically, in the example method depicted in FIG. 21, similar to theexample method of FIG. 20, includes a storage system (2000):establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050);establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050); andsimultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050).

However, the example method in FIG. 21 further includes: responsive todetermining available network bandwidth over the first communicationlink and determining a lack of network bandwidth over the secondcommunication link, switching (2102) one or more portions of datascheduled to be replicated over the second communication link to insteadbe replicated over the first communication link.

Switching (2102), responsive to determining available network bandwidthover the first communication link and determining a lack of networkbandwidth over the second communication link, one or more portions ofdata scheduled to be replicated over the second communication link toinstead be replicated over the first communication link may be carriedout similarly to switching (1904A) from one type of network messaginglayer (1950) to another type of network messaging layer (964), asdescribed above with reference to FIG. 19. Further, in this example,determining available network bandwidth and lack of network bandwidthmay be carried out by a storage controller communicating with a networkmonitoring process to determine status information for various networksavailable to the storage system (2000).

For further explanation, FIG. 22 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, as described in FIG. 20, the two storage systems (2000,2050) have an established replication relationship in accordance with agiven replication scheme, where the storage systems may use multipledifferent networks and correspondingly different network messagingmechanisms to simultaneously replicate data.

However, in the example method of FIG. 22, a replication policy mayspecify responses to changes or disruptions in network health, where theresponses may include switching replication schemes and/or switching toa different network and corresponding network messaging mechanism.

Specifically, in the example method depicted in FIG. 22, similar to theexample method of FIG. 20, includes a storage system (2000):establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050);establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050); andsimultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050).

However, the example method in FIG. 22 further includes: responsive todetermining a network failure on the first communication link supportingthe first type of network messaging layer (2062), switching (2202) oneor more portions of data scheduled to be replicated over the firstcommunication link to instead be replicated over the secondcommunication link.

Switching (2202), responsive to determining a network failure on thefirst communication link supporting the first type of network messaginglayer (2062), one or more portions of data scheduled to be replicatedover the first communication link to instead be replicated over thesecond communication link may be carried out similarly to switching(1904A) from one type of network messaging layer (1950) to another typeof network messaging layer (964), as described above with reference toFIG. 19. Further, in this example, determining network health status ornetwork failures may be carried out by a storage controllercommunicating with a network monitoring process to determine statusinformation for various networks available to the storage system (2000).

For further explanation, FIG. 23 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, as described in FIG. 20, the two storage systems (2000,2050) have an established replication relationship in accordance with agiven replication scheme, where the storage systems may use multipledifferent networks and correspondingly different network messagingmechanisms to simultaneously replicate data.

However, in the example method of FIG. 23, a replication policy mayspecify responses to changes or disruptions in network health, where theresponses may include switching replication schemes and switchingnetwork messaging mechanism.

Specifically, in the example method depicted in FIG. 23, similar to theexample method of FIG. 22, includes a storage system (2000):establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050);establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050);simultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050); and responsive todetermining a network failure on the first communication link supportingthe first type of network messaging layer (2062), switching (2202) oneor more portions of data scheduled to be replicated over the firstcommunication link to instead be replicated over the secondcommunication link.

However, the example method in FIG. 23 further specifies that switching(2202) data scheduled to be replicated over the first communication linkto instead be replicated over the second communication link furtherincludes switching (2302) from using the first replication scheme overthe first type of network messaging layer (2062) to instead use thesecond replication scheme over the second type of network messaginglayer.

Switching (2302) from using the first replication scheme over the firsttype of network messaging layer (2062) to instead use the secondreplication scheme over the second type of network messaging layer maybe carried out similarly to switching (1904B) between differentreplication schemes described above with reference to FIG. 19.

For further explanation, FIG. 24 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, a replication policy may specify, for a correspondingdataset, one or more bases on which to select a first replication schemeto replicate the dataset, including using network characteristics as abasis.

Specifically, in the example method depicted in FIG. 24, similar to theexample method of FIG. 20, includes a storage system (2000):establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050);establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050); andsimultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050).

However, the example method in FIG. 24 further includes: selecting(2402), based on network characteristics for a first network, a firstreplication scheme to replicate data (2072) using a first type ofnetwork messaging layer (2062).

Selecting (2402), based on network characteristics for a first network,a first replication scheme to replicate data (2072) using a first typeof network messaging layer (2462) may be carried out similarly toselecting (1202) a replication scheme based on network characteristicsof a network, as described above with reference to FIG. 12. In thisexample, as described above, a replication policy may specify networkrequirements for different replication schemes, where a replicationscheme may be selected based on given network characteristics satisfyingthe replication scheme.

For further explanation, FIG. 25 sets forth a flowchart that illustratesa method for implementing replication handling among distinct networksin accordance with some embodiments of the present disclosure.

In this example, similar to the example of FIG. 24, where a replicationpolicy is selected for a first network, in this example, a replicationpolicy may specify, for a corresponding dataset, one or more bases onwhich to select a second replication scheme to replicate the dataset,including using network characteristics as a basis.

Specifically, in the example method depicted in FIG. 25, similar to theexample method of FIG. 20, includes a storage system (2000):establishing (2002), over a first type of network messaging layer(2062), a communication link for a first replication scheme between afirst storage system (2000) and a second storage system (2050);establishing (2004), over a second type of messaging layer (2060), asecond communication link for a second replication scheme between thefirst storage system and the second storage system (2050); andsimultaneously replicating, over both the first type of networkmessaging layer (2062) and the second type of network messaging layer(2060), respective portions of a dataset (2052) from the first storagesystem (2000) to the second storage system (2050).

However, the example method in FIG. 25 further includes: selecting(2502), based on network characteristics for a second network, a secondreplication scheme to replicate data (2070) using a second type ofnetwork messaging layer (2460).

Selecting (2502), based on network characteristics for a second network,a second replication scheme to replicate data (2070) using a second typeof network messaging layer (2460) may be carried out similarly toselecting (2502) a replication scheme based on network characteristicsof a network, as described above with reference to FIG. 24.

For further explanation, FIG. 26A sets forth a flowchart thatillustrates an example method for implementing replication handlingduring storage system transportation in accordance with some embodimentsof the present disclosure.

In some situations, a dataset may be replicated from a first location toa second location, and an effective way to replicate the dataset fromthe first location to the second location is to physically move ortransport a copy of the dataset. In other words, physical transport of adataset may be more practical than a network transfer of the datasetbecause after a dataset grows past a certain point, for example largerthan several terabytes, replicating the dataset over a computer networkto a remote location may be cost prohibitive, time prohibitive, orotherwise disadvantageous relative to physically transporting thedataset or a copy of a dataset as part of replicating the dataset.

In some examples, a storage system being may be transported via shippingcontainers, package delivery services, by a vehicle, or in other ways.In some cases, the storage system may have its own power supply, or thestorage system may, during transport, have access, and sometimes limitedor intermittent access, to an external power supply. Further, thestorage system may have radios, or be connected to radios, such as forconnecting to cellphone or other types of wireless data networks, ormay, continuously or intermittently, be connected through some othermeans to external networks, during transport. Additional features for astorage system carrying out continued replication of a dataset duringtransport are described below.

In cases where a storage system is being transported from one physicallocation to another physical location, and where the storage systemstores a dataset that is being replicated among multiple storagesystems, if the dataset is updated during the transport of the storagesystem without replication efforts by the storage system, then uponarrival, the dataset on the storage system may be significantlyout-of-sync with the dataset on the other storage systems, due to losingupdates for the duration of travel. Therefore, as described below,various implementations of replication handling during storage systemtransportation are described that provide for continued replication of adataset stored on a storage system as the storage system is physicallytransported between different physical locations. Such continuedreplication of the dataset on the storage system during transport may,upon arrival at a destination physical location, reduce the time andresources required to bring the dataset on the storage system up-to-datewith other storage systems that are replicating the dataset and that hadbeen processing updates to the dataset at their locations while the onecopy of the dataset was being transported.

As one example, a storage system may be physically located at a firstlocation along with one or more storage systems, such as a firstlocation that is a data center or an on-premises site, where for thepurpose of distinction, but not necessarily an ordinal distinction, thestorage system to be transported is referred to as a “first” storagesystem. In this example, the one or more storage systems may be part ofa pod, where a dataset is being replicated among the members of the pod.A full description of pods and different types of replication schemes isprovided above, with reference to FIGS. 4A-6B. In this example, the podmay be stretched to include the storage system to be transported, or thefirst storage system, and as a result of stretching the pod to includethe first storage system, the dataset may begin to be replicated ontothe first storage system—where this replication of the dataset onto thefirst storage system begins and ends prior to the first storage systembeing physically moved to the second location. As noted above, in somecases, a dataset on the first storage system may be physicallytransported from a first physical location to a second physical locationmore quickly than if the dataset were transferred over a computernetwork between the first physical location and the second physicallocation, due to limitations of wide area network bandwidth versus thetime to physically transport a large data set on physical media. Inother examples, the pod expansion may only begin, but not complete,prior to movement of the first storage system. In these examples, duringtransport of the first storage system, the dataset on the first storagesystem may become out-of-sync with respect to the dataset on the otherstorage systems replicating the dataset within the pod.

As discussed in greater detail below, methods are provided forreplication handling in the first storage system during transport thatinclude overcoming such an out-of-sync state of the dataset on the firststorage system, or continuing replication of the dataset on the firststorage system. In this way, the first storage system, and a dataset,may be transported from a first location to a second location, resultingin the dataset being available at a second location faster due tophysical transport of the first storage system than if the dataset weretransferred over a computer network. Further, because synchronizationefforts are made during transport of the first storage system, uponarrival of the first storage system at the second location, the dataseton the first storage system may be synchronized faster than if nosynchronization of the dataset were performed during transport.

As noted above, in some examples, if a dataset is being replicated amonga set of storage systems and a first storage system, and if the datasetis not static, then during transport of the first storage system from afirst physical location to a second physical location, andcorrespondingly, during transport of a copy of the dataset stored on thefirst storage system, the dataset may become out-of-sync duringtransport. Consequently, in implementations described below,synchronization of the dataset is continued during transport of thefirst storage system, where synchronization efforts are continued overdifferent types of available communication networks that may beencountered during transport of the first storage system.

Further, the communication networks available during transport of thefirst storage system may be different from the communication networksavailable at the first physical location of the first storage system,and there may be different types of communication networks availableover the course of the transport of the first storage system. Furtherstill, the communication networks available during transport may not beable to match the performance of communication networks at either afirst physical location or a second physical location. In some examples,characteristics of available communication networks during transport ofthe first storage system may serve as a basis for switching from aninitial replication scheme at the first physical location to areplication scheme that is more suited to the communication networksavailable during transport of the first storage system.

In some implementations, movement of a dataset may be carried out bytransporting a first storage system (2600) from the first physicallocation to the second physical location, where the first storage system(2600) stores a copy of the dataset within memory devices internal tothe first storage system (2600), and further where the dataset isattempted to be kept synchronized, or as nearly synchronized ascommunication networks available during transport of the first storagesystem (2600) allow.

Turning toward FIG. 26A, the flowchart illustrates an example method forreplication handling during storage system transportation in accordancewith some embodiments of the present disclosure. In someimplementations, a storage system to be transported can include one ormore storage devices, one or more network ports, and one or more storagecontrollers. Such a storage system may be embodied as one or more of thestorage systems described above, including combinations and variants ofsuch storage systems. Such a storage system may be coupled to powersupplies, networking resources, and other devices in variousembodiments.

The computing environment illustrated in FIG. 26A includes a firststorage system (2600) and a second storage system (2650). In thisexample, the first storage system (2600) and the second storage system(2650) establish a replication relationship that is based on the firststorage system (2600) and the second storage system (2650) initiating areplication scheme among themselves, and among any other storage systemsthat may be included in the replication relationship. A replicationscheme may be a synchronous replication scheme, an asynchronousreplication scheme, a snapshot-based replication scheme, among any ofthe other replication schemes described above with reference to FIGS.4A-25. In some examples, a replication scheme may replicate a datasetamong stationary storage systems and storage systems configured tocontinue replicating during transportation, where the dataset may be anyaddressable quantity or type of storage content, such as one or morevolumes, files, data objects, databases, among other examples describedabove with reference to FIGS. 4A-25.

Further, in this example, upon initiation of a replication scheme, thefirst storage system (2600) and the second storage system (2650) maybegin to coordinate consistent with properties and characteristics ofthe particular replication scheme being used—such that updates to aversion of a dataset on the first storage system (2600) and the secondstorage system (2650) are replicated to the other storage systems thatare part of the replication scheme. In some examples, any of the storagesystems that are part of a replication scheme may receive updates to adataset being replicated.

In this way, in some implementations, updates to a dataset—from eitherusers, applications, workloads, or other storage systems—may be receivedat any of the storage systems and replicated to each other storagesystem—where the process of replication includes replicating, at or byeach respective storage system, a given update to a respective versionof a locally stored dataset to be consistent with every other version ofthe dataset stored on every other storage system that is coordinating toimplement the replication scheme.

In other words, in some examples, replicating a dataset includes a givenstorage system updating a local version of a dataset to be consistentwith other storage systems that are also updating respective localversions of the dataset to be consistent with one another—whether anupdate to a dataset is being received from a user, application,workload, or a computing system outside of the storage systemsreplicating the dataset, or whether an update to the dataset is beingreceived from another storage system. Additional details for carryingout replication of a dataset in accordance with various replicationschemes may be found above with reference to FIGS. 4A-25.

The example method depicted in FIG. 26A includes: replicating (2602),between a first storage system (2600) and a second storage system (2650)that are both located at a first physical location, a dataset (2670);connecting (2604), by the first storage system (2600) and responsive tomovement of the first storage system (2600) to an intermediate physicallocation, to a communication network available at the intermediatephysical location; and continuing (2606), between the first storagesystem at the intermediate physical location and the second storagesystem (2650) at the first physical location, replication of the dataset(2670) over the communication network available at the intermediatephysical location.

Replicating (2602), between a first storage system (2600) and a secondstorage system (2650) that are both located at a first physicallocation, a dataset (2670) may be carried out using various techniques.For example, a dataset (2670) may be stored on a second storage system(2650), and the first storage system (2600) may be identified as abackup storage system—where replication (2602) includes the firststorage system (2600) being identified as a target storage system forsynchronously or asynchronously receiving the dataset (2670) and updatesto the dataset (2670), and where replication (2602) initially includescopying an entire dataset (2670) from the second storage system (2650)to the first storage system (2600).

In some examples, the first storage system (2600) may be identified as atarget storage system via user interface selections of a dashboard, orcontrol console that provides management options for one or more storagesystems, including management options for identifying target storagesystems for backups, specifying datasets, volumes, or application datato backup or replicate, among other storage management options.Replication of a dataset among storage systems is described in greaterdetail above with reference to FIGS. 4A-8, where the first storagesystem (2650) may be considered to have all the functionality andfeatures of the storage systems described above with reference to FIGS.1A-3D.

In other examples of replicating (2602) a dataset between the firststorage system (2600) and a second storage system (2650), the secondstorage system (2650) and first storage system (2600) may be selected tobe members of a pod, as described in the example above, where a datasetmay be replicated among the members of the pod. Pods and replicationamong members of a pod, or a replicated cluster, are described abovewith reference to FIGS. 4A-8. Further, in this example, member storagesystems in a pod may be selected via a user interface allowing forspecification of a dataset to be replicated among pod members.

In this example, replicating (2602) a dataset (2670, 2660) may include asecond storage system (2650) and a first storage system (2600) using anyof the replication schemes described above with reference to FIGS. 4A-25to replicate a dataset, receive updates to a dataset, and ensureconsistency of the dataset among the storage systems replicating thedataset. As illustrated in FIG. 26A, a second storage system (2650) anda first storage system (2600) may each store a local version (2660,2670) of a dataset being replicated. While in this example, FIG. 26Adepicts updates (2672, 2662) to the replicated dataset going from thesecond storage system (2650) to the first storage system (2600), inother examples, updates may also be sent from the first storage system(2600) to the second storage system (2650), in dependence upon whichsystem receives an update to a dataset.

Continuing with this example, and to provide context for a computationalenvironment for the first storage system (2600) and the second storagesystem (2650), a first physical location for the first storage system(2600) may be within a traditional, geographically fixed data center. Inthis example, the first storage system (2600) may be physicallyconnected, via one or more network ports, to one or more networksimplemented within the fixed data center. For example, the firstcommunication network may be a Fibre Chanel network. Further, in thisexample, the first storage system (2600) may be connected to an externalpower supply provided by the fixed data center. In this way, in thisexample, while the first storage system (2600) is located within thefirst physical location, the first storage system (2600) may have asynchronized copy of the dataset (2670) due to the first storage system(2600) and the second storage system (2650) establishing a replicationrelationship, and being members of a replication scheme prior tophysical transport of the first storage system (2600).

Connecting (2604), by the first storage system (2600) and responsive tomovement of the first storage system (2600) to an intermediate physicallocation, to a communication network available at the intermediatephysical location may be carried out in accordance with differenttechniques. For example, a network controller or storage controller onthe first storage system (2600) may, responsive to the first storagesystem (2650) being disconnected from a current communication networkand moved to an intermediate physical location, detect a loss of thecommunication network connection that is available at the first physicallocation, where the first storage system (2600) is physically located atthe first physical location prior to movement. An intermediate physicallocation may be any physical location between the first physicallocation and a destination physical location for the first storagesystem (2600), including the intermediate physical location being on orwithin a land vehicle, aircraft, watercraft, shipping container, or someother vessel capable of physically transporting the first storage system(2600). Readers will appreciate that the intermediate physicallocations, and all locations described herein, may include the locationof a vehicle at a particular point in time as the storage system may beloaded on a vehicle and may be undergoing transport through a set ofintermediate physical locations.

Further, responsive to detecting the loss of the communication networkconnection available at the first physical location, a networkcontroller or storage controller on the first storage system (2600) maybegin to search for any communication networks available at theintermediate physical location, including wireless 802.11 networks,cellular networks, satellite links, and/or physical network connections,such as Ethernet, Fibre Channel, SCSI, among other physical or wirelessnetworks. Continuing with this example, in response to finding anavailable communication network at the intermediate physical location,the first storage system (2600) may connect (2604) to the availablecommunication network using a communication protocol that corresponds tothe communication network, including communication protocolscorresponding to wireless 802.11 networks, cellular networks, satellitelinks, and/or physical network connections, such as Ethernet, FibreChannel, SCSI, among other physical or wireless networks.

Continuing (2606), between the first storage system (2600) at theintermediate physical location and the second storage system (2650) atthe first physical location, replication (2602) of the dataset (2670)over the communication network available at the intermediate physicallocation may be carried out using different techniques. For example, thefirst storage system (2600) may, given the connection to thecommunication network available at the intermediate physical location,communicate with the second storage system (2650) to determine arecovery point and begin a recovery and resynchronization process tobring the version of the dataset (2660) on the first storage system(2600) in-sync with the version of the dataset (2670) on the secondstorage system (2650). More specifically, as discussed above withreference to FIGS. 4A-8 in the context of this example, the respectivedatasets (2660, 2670) on the mobile date center (2600) and the secondstorage system (2650) may be in-sync and consistent prior to themovement of the first storage system (2600), where during a period afterthe first storage system (2600) is disconnected from a communicationnetwork available at the first physical location and prior to connection(2604) to a communication network available at the intermediate physicallocation, the datasets (2660, 2670) may become out-of-sync because ofupdates received at the second storage system (2650) that were unable tobe replicated to the first storage system (2600). Furthermore, even ifthe transported storage is not brought fully in-sync, transfer of someamount of data will reduce the total data to transfer when thetransported storage system arrives at its destination and is connectedfor use.

In this example, the out-of-sync dataset (2660) on the first storagesystem (2600) may be brought into an in-sync and consistent staterelative to the dataset (2670) on the second storage system (2650) inaccordance with the data recovery process described above, whererecovery includes reconciling differences in applying updates. Further,in the context of a recovery process described above, the first storagesystem (2600) may be considered to have gone from a “detached” statewhen disconnected from the communication network available at the firstphysical location to a “connected” state when connected to thecommunication network available at the intermediate physical location.

In this way, in this example, after establishing a communication linkover the communication network available at the intermediate physicallocation, the first storage system (2600) may then continue (2606) toreplicate data by continuing to use a replication scheme used at thefirst physical location. However, in other examples, the first storagesystem (2600) may select a different replication scheme to use whileconnected to the communication network available at the intermediatephysical location, relative to the first physical location, where thedifferent replication scheme selected may be based on characteristics ofthe communication network available at the intermediate physicallocation.

More specifically, in some examples, based on new network capabilitiesat the intermediate physical location, the first storage system (2600)may select a replacement replication scheme to continue replication ofthe dataset (2670).

For further explanation, FIG. 26B sets forth a flowchart thatillustrates a method for implementing replication handling in a firststorage system in accordance with some embodiments of the presentdisclosure.

In this example, the replication relationship between the first storagesystem (2600) and the second storage system (2650) is established, wherethe replication relationship may be based on any of the replicationschemes to carry out replicating the dataset as described above withreference to FIG. 26A. While this replication relationship is describedabove with reference to FIG. 26A, the focus of the flowchart and methoddescribed relative to FIG. 26A is on movement of the first storagesystem (2600) from a first physical location to an intermediate physicallocation, connection by the first storage system (2600) to acommunication network available during transport, and continuing toreplicate the dataset between the first storage system (2600) at anintermediate location and the second storage system (2650) at a firstphysical location.

The example method depicted in FIG. 26A is similar to the example methoddepicted in FIG. 26B in that the example method depicted in FIG. 26Balso includes: replicating (2602), between a first storage system (2600)and a second storage system (2650) that are both located at a firstphysical location, a dataset (2670); connecting (2604), by the firststorage system (2600) and responsive to movement of the first storagesystem (2600) to an intermediate physical location, to a communicationnetwork available at the intermediate physical location; and continuing(2606), between the first storage system (2600) at the intermediatephysical location and the second storage system (2650) at the firstphysical location, replication of the dataset (2670) over thecommunication network available at the intermediate physical location.

However, the example method depicted in FIG. 26B further specifies thatreplicating (2602), between a first storage system (2600) and a secondstorage system (2650) that are both located at a first physicallocation, a dataset (2670) includes: establishing (2608) a replicationscheme between a first storage system (2600) and a second storage system(2650) that includes replicating (2602), between the first storagesystem (2600) and the second storage system (2650), updates to thedataset (2660, 2670) that are received at either the first storagesystem (2600) or the second storage system (2650), where the replicationscheme synchronously or asynchronously maintains consistency between aversion of the dataset (2660) stored on the first storage system (2600)and a version of the dataset (2670) stored on the second storage system(2650).

Establishing (2608) a replication scheme between a first storage system(2600) and a second storage system (2650) that includes replicating(2602), between the first storage system (2600) and the second storagesystem (2650), updates to the dataset (2660, 2670) that are received ateither the first storage system (2600) or the second storage system(2650) may be carried out using various techniques. For example, a usermay select, via a user interface providing storage system managementoptions for storage systems, the first storage system (2600) and thesecond storage system (2650) to begin replicating a specified dataset,where the user may specify any of the types of datasets described above,and where the user may also specify the type of replication scheme touse to replicate the dataset. As described above, in some examples, theuser may specify a type of replication scheme and members of a pod andone or more datasets to be replicated among the members of the pod,where the members of the pod may be one or more storage systems.

Example replication schemes are described above with reference to FIG.26A, and include replication schemes that synchronously orasynchronously maintain consistency between respective versions of areplicated dataset stored on respective storage systems, including, withreference to FIG. 26B, maintaining consistency between a version of adataset (2660) stored on the first storage system (2600) and a versionof the dataset (2670) stored on the second storage system (2650).

For further explanation, FIG. 27 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

The first storage system (2600) and the second storage system (2650) mayimplement data storage features described above with reference to FIGS.1A-26, as the first storage system (2600) and the second storage system(2650) may include some or all of the components described above.However, as described above, the first storage system (2600) may alsoimplement additional features that support mobility of the first storagesystem (2600) and continued data replication during transport.

In this example, the first storage system (2600), following the exampleof FIG. 26A describing the first storage system (2600) moving to anintermediate physical location, determines that network capabilities,such as bandwidth capacity, are lower at a communication networkavailable at the intermediate physical location—where in a laterexample, described below with respect to FIG. 28, a selection is madefor an appropriate replication scheme to use based on networkcharacteristics of the communication network available at theintermediate physical location.

The example method depicted in FIG. 27 is similar to the example methoddepicted in FIG. 26A in that the example method depicted in FIG. 27 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location, to a communication networkavailable at the intermediate physical location; and continuing (2606),between the first storage system (2600) at the intermediate physicallocation and the second storage system (2650) at the first physicallocation, replication of the dataset (2670) over the communicationnetwork available at the intermediate physical location.

However, the example method depicted in FIG. 27 further includes:determining (2702) network characteristics of the communication networkavailable at the intermediate physical location; and determining (2704),based on the network characteristics of the communication networkavailable at the intermediate physical location, that the communicationnetwork available at the intermediate physical location provides lowerbandwidth than the communication network available at the first physicallocation.

Determining (2702) network characteristics of the communication networkavailable at the intermediate physical location may be carried out usingtraditional hardware and software techniques for a network controllerscanning for and identifying physical or wireless networks that may beavailable at one or more network ports. Further, a network controller,may, given a determination that a communication network is available,determine network characteristics based on a type of the availablecommunication network, where network characteristics includetransmission rates and/or bandwidth capacity. For example, if thecommunication network available at the intermediate physical location isan Ethernet connection, then such a network connection has commonlyassociated features and network characteristics, such as transmissionrates and/or bandwidth capacity. Similarly, network characteristics forthe communication network available at the intermediate physicallocation may be based on whether a type of network connection is FibreChannel, wireless 802.11, a satellite link, among other examplecommunication networks described above.

Determining (2704), based on the network characteristics (2752) of thecommunication network available at the intermediate physical location,that the communication network available at the intermediate physicallocation provides lower bandwidth than the communication networkavailable at the first physical location may be carried out usingdifferent techniques. For example, the communication network availableat the first physical location is a Fibre Channel network, and thestorage controller may track metrics, including network characteristics,corresponding to communication networks used during the replication ofthe dataset, where the network characteristics corresponding tocommunication networks used during the replication of the dataset may bedetermined similarly to determining (2702) the network characteristicsdescribed above. Further, given network characteristics of thecommunication network available at the first physical location andnetwork characteristics of the communication network available at theintermediate physical location, the storage controller may determinethat network bandwidth available at the intermediate physical locationis lower than the bandwidth that was available at the first physicallocation.

For example, if the communication network available at the intermediatephysical location is a wireless 802.11 network, and as noted above, thecommunication network available at the first physical location wasEthernet, then the bandwidth capabilities indicated by respectivenetwork characteristics of these networks may be compared to determinethat the bandwidth available on the communication network at theintermediate physical location is lower than the bandwidth available onthe communication network at the first physical location.

As noted above, this determination (2704) of a lower bandwidthavailability may be used to select a replacement replication scheme toused that is more appropriate to the lower bandwidth capacity of thecommunication network available at the intermediate physical location,where such a selection is described below with reference to FIG. 28.

For further explanation, FIG. 28 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

In this example—which continues the example above with reference to FIG.27, which describes determining that network characteristics, such asnetwork bandwidth capacity, are lower at a communication networkavailable at the intermediate physical location—a selection is made fora lower bandwidth replication scheme to use based on the networkcharacteristics of the communication network available at theintermediate physical location.

The example method depicted in FIG. 28 is similar to the example methoddepicted in FIG. 27 in that the example method depicted in FIG. 28 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location, to a communication networkavailable at the intermediate physical location; continuing (2606),between the first storage system (2600) at the intermediate physicallocation and the second storage system (2650) at the first physicallocation, replication of the dataset (2670) over the communicationnetwork available at the intermediate physical location; determining(2702) network characteristics of the communication network available atthe intermediate physical location; and determining (2704), based on thenetwork characteristics of the communication network available at theintermediate physical location, that the communication network availableat the intermediate physical location provides lower bandwidth than thecommunication network available at the first physical location.

However, the example method depicted in FIG. 28 further includes:selecting (2802), responsive to the communication network available atthe intermediate physical location providing lower bandwidth than thecommunication network available at the first physical location, alow-bandwidth replication scheme from among a plurality of replicationschemes.

Selecting (2802), responsive to the communication network available atthe intermediate physical location providing lower bandwidth than thecommunication network available at the first physical location, alow-bandwidth replication scheme from among a plurality of replicationschemes may be carried out using different techniques. For example, inresponse to determining (2704) that the communication network availableat the intermediate physical location provides lower bandwidth than thecommunication network available at the first physical location, thestorage controller may access a table that maps each of the plurality ofsupported replication schemes with preferred types of communicationnetworks, and where each of the mapped preferred types of communicationnetworks correspond to respective bandwidth capacity ranges. Theplurality of replication schemes supported may include the replicationschemes described above with reference to FIG. 26A.

Continuing with this example, the lower bandwidth provided by thecommunication network available at the intermediate physical locationmay be matched to a bandwidth capacity range for one or more replicationschemes, where the selected low-bandwidth replication scheme may bebased on an estimate of which of the matching one or more replicationschemes will likely result in a greatest amount of synchronization ofthe dataset during transport of the first storage system (2600). In someexamples, the low-bandwidth replication scheme may be an asynchronousreplication scheme, such as a snapshot-based replication scheme, wherethe initial, higher bandwidth replication scheme may be a synchronousreplication scheme.

For further explanation, FIG. 29 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

In this example, which continues after the first storage system (2600)has selected (2802) a low-bandwidth replication scheme, now performs atransition from the previous replication scheme—used when the firststorage system (2600) was connected to a communication network at thefirst physical location—to the selected (2802), low-bandwidthreplication scheme.

The example method depicted in FIG. 29 is similar to the example methoddepicted in FIG. 28 in that the example method depicted in FIG. 29 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location, to a communication networkavailable at the intermediate physical location; continuing (2606),between the first storage system (2600) at the intermediate physicallocation and the second storage system (2650) at the first physicallocation, replication of the dataset (2670) over the communicationnetwork available at the intermediate physical location; determining(2702) network characteristics of the communication network available atthe intermediate physical location; determining (2704), based on thenetwork characteristics of the communication network available at theintermediate physical location, that the communication network availableat the intermediate physical location provides lower bandwidth than thecommunication network available at the first physical location; andselecting (2802), responsive to the communication network available atthe intermediate physical location providing lower bandwidth than thecommunication network available at the first physical location, alow-bandwidth replication scheme from among a plurality of replicationschemes.

However, the example method depicted in FIG. 29 further includes:transitioning (2902), without terminating replication of the dataset andresponsive to selecting (2802) the low-bandwidth replication scheme, thefirst storage system (2600) from using a current replication scheme tousing the low-bandwidth replication scheme.

Transitioning (2902), without terminating replication of the dataset andresponsive to selecting (2802) the low-bandwidth replication scheme, thefirst storage system (2600) from using a current replication scheme tousing the low-bandwidth replication scheme may be carried out usingvarious techniques. For example, as discussed above, responsive tomovement of the first storage system (2600) to an intermediate physicallocation, the first storage system (2600) may lose connection to acurrent communication network that had been available at the firstphysical location, where continuation (2606) of the replication mayinclude the first storage system (2600) undergoing a data recoveryprocess responsive to connecting (2604) to the communication networkavailable at the intermediate physical location.

Given this context described above with reference to FIG. 26A, theselection (2802) of the low-bandwidth replication scheme may beperformed by a storage controller after connecting (2604) to thecommunication network available at the intermediate physical locationand prior to continuing (2606) replication of the dataset. Additionally,prior to continuing (2606) replication of the dataset, the storagecontroller may transition (2902) to using the low-bandwidth replicationscheme prior to the data recovery process. Further, as discussed above,the plurality of replication schemes, including the initial replicationscheme and the low-bandwidth replication scheme, may be based on acommon management model and use similar techniques for data recovery,communicating updates to the dataset included in the various type ofreplication, including synchronous replication and asynchronousreplication.

In some examples, the initial replication scheme may be a synchronousreplication scheme and the low-bandwidth replication scheme may be anasynchronous replication scheme, where both replication schemes transferidentified blocks and identified segments. Further, in this example,given identifiers for the blocks and segments, the first storage system(2600) may transition from synchronous replication to asynchronousreplication and continue replication because the first storage system(2600) is aware of the blocks and segments it has already received andhow to incorporate additionally received blocks and segments as theycontinue arriving in accordance with the asynchronous replicationscheme.

Further, in this example, because synchronization and data replicationare based on a common management model, the transitioning (2902) fromthe current replication scheme (synchronous replication) to thelow-bandwidth replication scheme (asynchronous replication) may becarried out by dropping the in-sync state of the dataset (2660), andleaving the replication state in a state of recovery, which may beconsidered an indefinite state as long as asynchronous replication isenabled. Similarly, responsive to the first storage system (2600)arriving at a destination physical location, such as an on-prem site, oranother geographically fixed data center, the first storage system(2600) may switch from asynchronous replication to synchronousreplication by setting the in-sync state to synchronized in response tothe first storage system (2600) catching up, or synchronizing thedataset (2660) with the other storage systems that are replicating thedataset (2670).

For further explanation, FIG. 30 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

In this example, during transport, a first storage system (2600) may,over the course of traveling over a large distance, discover newwireless networks and lose connections with other wireless networks, orin some cases, connect and disconnect from wired communication networks.As described below, in this example, a first storage system (2600) thathas already transitioned (2902) to a low-bandwidth replication scheme,determines that available networks have changed, and in response, thefirst storage system (2600) undergoes another transition to a differenttype of replication scheme.

The example method depicted in FIG. 30 is similar to the example methoddepicted in FIG. 29 in that the example method depicted in FIG. 30 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location, to a communication networkavailable at the intermediate physical location; continuing (2606),between the first storage system (2600) at the intermediate physicallocation and the second storage system (2650) at the first physicallocation, replication of the dataset (2670) over the communicationnetwork available at the intermediate physical location; determining(2702) network characteristics of the communication network available atthe intermediate physical location; determining (2704), based on thenetwork characteristics of the communication network available at theintermediate physical location, that the communication network availableat the intermediate physical location provides lower bandwidth than thecommunication network available at the first physical location;selecting (2802), responsive to the communication network available atthe intermediate physical location providing lower bandwidth than thecommunication network available at the first physical location, alow-bandwidth replication scheme from among a plurality of replicationschemes; transitioning (2902), without terminating replication of thedataset and responsive to selecting (2802) the low-bandwidth replicationscheme, the first storage system (2600) from using a current replicationscheme to using the low-bandwidth replication scheme.

However, the example method depicted in FIG. 30 further includes:selecting (3002), based on a change in network availability at theintermediate physical location and on expected performance improvementreplicating the dataset, a replacement replication scheme; andtransitioning (3004), responsive to selecting (3002) the replacementreplication scheme, from the low-bandwidth replication scheme to thereplacement replication scheme.

Selecting (3002), based on a change in network availability at theintermediate physical location and on expected performance improvementreplicating the dataset, the replacement replication scheme may becarried out using various techniques. For example, during transport, thefirst storage system (2600) may be moved from a physical location whereonly a cellular network is available into a physical location where awireless 802.11 network is available. In this example, the intermediatephysical location may change, however, in other examples, theintermediate physical location may remain the same while differentcommunication networks become available. As noted above, based onperiodic polling, or based on detecting a network event, a storagecontroller or network controller on the first storage system (2600) maydetermine changes in available networks. In this example, given thedetermined change in available networks, the storage controller may,similarly to selecting (2802) the low-bandwidth replication scheme,select (3002) a replacement replication scheme based on a type ofavailable network and/or based on available bandwidth capacity for thenewly available network.

For example, based on an increase in network bandwidth, the firststorage system (2600) may select a replacement replication scheme toimprove the performance of replicating the dataset based on thereplacement replication scheme being more capable than the currentlow-bandwidth replication scheme of making use of the increased networkbandwidth. For example, the first storage system (2600) may transitionfrom the asynchronous replication specified by the low-bandwidthreplication scheme back to a synchronous replication scheme.

Transitioning (3004), responsive to selecting the replacementreplication scheme, from the low-bandwidth replication scheme to thereplacement replication scheme may be carried out using differenttechniques. For example, transitioning (3004) from the low-bandwidthreplication scheme to the replacement replication scheme may beperformed similarly to the previous transition (2902) from the initialreplication scheme to the low-bandwidth replication scheme describedabove with reference to FIG. 29.

For further explanation, FIG. 31 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

In this example, a trigger for a first storage system (2600) switchingbetween replication schemes—in addition to switching based on availablenetworks or instead of switching based on available networks—may be achange in power sources. Specifically, in this example, in response tobeing unplugged from an external power source, the first storage system(2600) may switch to internal power, and correspondingly switch to areplication scheme that only operates intermittently, thereby conservingpower, or that can operate with fewer powered-on components, or in lowerpower modes for the components that are powered on.

The example method depicted in FIG. 31 is similar to the example methoddepicted in FIG. 26A in that the example method depicted in FIG. 31 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location (e.g., during physicaltransport on a vehicle), to a communication network available at theintermediate physical location; and continuing (2606), between the firststorage system (2600) at the intermediate physical location and thesecond storage system (2650) at the first physical location, replicationof the dataset (2670) over the communication network available at theintermediate physical location.

However, the example method depicted in FIG. 31, in contrast to theexample method described with reference to FIG. 26A, further includes:determining (3102), relative to the first physical location, lower poweravailability at the intermediate physical location; and transitioning(3104), based on the lower power availability at the intermediatephysical location, the first storage system (2600) from using a currentreplication scheme to using a low-power replication scheme.

Determining (3102) lower power availability at the second physicallocation may be carried out by, for example, detecting a transition fromusing an external power source, such as a power outlet, to using aninternal power source such as a battery, where detection may includedetecting loss of power from the external power source and handling atransition to battery power. For example, at the first physicallocation, which may be a geographically fixed data center, the firststorage system (2600) may be plugged in to an external power supply,where prior to transport, the first storage system (2600) may beunplugged from the external power supply, which may trigger an automaticswitch to using an internal power source. In some embodiments, thestorage system may be able to run in a lower power mode when runningfrom batteries or other limited power sources associated with thetransport. In fact, the storage system may be configured to detect thatthe available power is lower by measuring lowered voltage levels or lessavailable current, thereby causing the storage system to enter the lowerpower mode.

Transitioning (3104), based on the lower power availability at theintermediate physical location, the first storage system (2600) fromusing a current replication scheme to using a low-power replicationscheme may be carried out using different techniques. For example,transitioning (3104) from using a current replication scheme to using alow-power replication scheme may be carried out similarly totransitioning (2902) the first storage system (2600) from using acurrent replication scheme to using a low-bandwidth replication scheme,as described above with reference to FIG. 29. For example, in responseto determining (3102) the lower power availability, the storagecontroller may access a table that corresponds each of the plurality ofreplication schemes with an indication of whether or not the respectivereplication scheme is a low-power replication scheme or not. Forexample, each asynchronous replication scheme may be mapped to indicatea low-power replication scheme, and each synchronous replication schememay be mapped to indicate a high-power replication scheme. In this way,the storage controller may identify and select a low-power replicationscheme to serve as the replacement replication scheme to transition(3104) into.

For further explanation, FIG. 32 sets forth a flowchart that illustratesa method for implementing replication handling during storage systemtransportation in accordance with some embodiments of the presentdisclosure. Also depicted in this example is an additional storagesystem (2650).

In this example, a trigger for a first storage system (2600)transitioning between replication schemes may be arrival at a physicaldestination location. Specifically, in this example, in response toarriving at a physical destination location, the first storage system(2600) identifies available networks and switches to one of theavailable networks.

The example method depicted in FIG. 32 is similar to the example methoddepicted in FIG. 26A in that the example method depicted in FIG. 32 alsoincludes: replicating (2602), between a first storage system (2600) anda second storage system (2650) that are both located at a first physicallocation, a dataset (2670); connecting (2604), by the first storagesystem (2600) and responsive to movement of the first storage system(2600) to an intermediate physical location, to a communication networkavailable at the intermediate physical location; and continuing (2606),between the first storage system (2600) at the intermediate physicallocation and the second storage system (2650) at the first physicallocation, replication of the dataset (2670) over the communicationnetwork available at the intermediate physical location.

However, the example method depicted in FIG. 32 further includes:responsive to arrival of the first storage system (2600) to a physicaldestination location: synchronizing (3202), with the second storagesystem (2650) to overcome any lags in synchronization of the dataset(2660) on the first storage system (2600) during transport between thefirst physical location and the physical destination location.

Synchronizing (3202), with the second storage system (2650) to overcomeany lags in synchronization of the dataset (2660) on the first storagesystem (2600) during transport between the first physical location andthe physical destination location, where synchronizing (3202) isresponsive to arrival of the first storage system (2600) to the physicaldestination location may be carried out using various techniques.

For example, the first storage system (2600) may, in response toarriving at the physical destination location, determine availability ofa communication network as described above with reference to FIG. 27.Specifically, a storage controller or network controller mayperiodically scan for available networks or respond to network events,such as physical connections to a port or detection of a wirelessnetwork. Further, given determination of an available communicationnetwork at the physical destination location and establishing acommunication link, the first storage system (2600) may synchronize(3202) the local dataset (2660) with the version of the dataset (2670)on the second storage system (2650).

Specifically, in this example, synchronization may be carried outsimilarly to how the first storage system (2600) continues (2606)replication of the dataset during transport, where the first storagesystem (2600) may communicate with the second storage system (2650) todetermine a recovery point and begin a recovery and resynchronizationprocess to bring the version of the dataset (2660) on the first storagesystem (2600) in-sync with the version of the dataset (2670) on thesecond storage system (2650). As discussed above with reference to FIGS.4A-8 in the context of this example, the respective datasets (2660,2670) on the mobile date center (2600) and the second storage system(2650) may be in-sync and consistent prior to the movement of the firststorage system (2600), where during a period after the first storagesystem (2600) is disconnected from a communication network available atthe first physical location and prior to connection (2604) to acommunication network available at the intermediate physical location,the datasets (2660, 2670) may become out-of-sync because of updatesreceived at the second storage system (2650) that were unable to bereplicated to the first storage system (2600). In this example, theout-of-sync dataset (2660) on the first storage system (2600) may bebrought into an in-sync and consistent state relative to the dataset(2670) on the second storage system (2650) in accordance with the datarecovery process described above, where recovery includes reconcilingdifferences in applying updates. In this example, the communicationnetwork available at the physical destination location may becomevisible to the first storage system (2600) in response to plugging inone or more network cables for available networks into one or morecorresponding network ports on the first storage system (2600), or bythe first storage system (2600) logging in to one or more wirelessnetworks available at the third physical location.

While the above implementations provide explanations that closely trackthe example flowcharts of FIGS. 26A-32, what follows are additionalconsiderations with regard to implementations of a first storage system(2600).

As discussed above, in some implementations, a first storage system(2600) may be a member of a cluster of storage systems that arereplicating a dataset (2660). In such an example, the first storagesystem (2600) may—during a relocation of the first storage system (2600)from a first physical location to a physical destinationlocation—continue replicating the dataset (2660) as the dataset (2660)is being modified, by either the second storage system (2650) or thefirst storage system (2600). In this way, in this example, the firststorage system (2600), upon arrival to the physical destinationlocation, may arrive with a dataset (2660) that is at least partiallysynchronized with a dataset (2670) being replicated by the cluster ofstorage systems in the first physical location.

Continuing with this example, in some cases, the first storage system(2600) may be unable to maintain a dataset (2660) synchronized withother members of the cluster of storage systems. For example, availablebandwidth for available communication links during transport may beinsufficient to maintain the dataset (2660) on the first storage system(2600) synchronized with the other members of the cluster of storagesystems.

In such an example, the first storage system (2600), upon arrival at aphysical destination location, may synchronize its dataset (2660) withina timeframe that depends on a quantity of changes to the dataset thatwere unable to be transferred within bandwidth limitations over one ormore communication links that were available during transport. In otherwords, in some examples, during transport, communication links that maybe available to the first storage system (2600) may be wirelesscommunication links that operate at lower bandwidths and at higherlatency times as compared to communication links available at transportendpoints, including the first physical location and the physicaldestination location

In some implementations, responsive to changes in availablecommunication networks, and corresponding changes to network capacity,changes in network response times, or changes in other networkcharacteristics, a first storage system (2600) may also switch betweenreplication schemes. For example, a first storage system (2600) mayswitch from a current replication scheme that had been selected based onnetwork characteristics or conditions that have changed to a replacementreplication scheme that may have network transport requirements, such asbandwidth or latency requirements, that may be satisfied by the changed,or new network conditions or network characteristics.

Further, the first storage system (2600) may implement multipledifferent replication schemes, where the different replication schemesare based on a common management model for implementing the replicationschemes. In some implementations, the common management model may be abasis that enables the first storage system (2600) to switch from onetype of replication scheme to a different type of replicationscheme—where switching between replication schemes may be based on acommon management model used to support the different types ofreplication schemes. Further, the first storage system (2600) may be amember of a cluster of storage systems replicating data, where eachmember also implements multiple replication schemes that are based on asame common management model.

As one particular example, with reference to FIG. 26A, in someimplementations, prior to transport, a first storage system (2600) maybe synchronously replicating a dataset among the cluster of storagesystems at the first physical location. For the sake of clarity, asingle storage system (2650) is depicted in FIG. 26A; however, in otherexamples, and as described above with reference to FIGS. 4A-6B, acluster may include an arbitrary number of storage systems replicatingdatafirst storage system.

As noted above, the communication networks available to a first storagesystem (2600) during transport may be unable to support latencyrequirements or data bandwidth rates that are sufficient to maintain thedataset on the first storage system (2600) synchronized with the rest ofthe storage systems in the cluster of storage systems.

In this case of a degradation in network bandwidth availability, such achange in network performance or network characteristics may serve as abasis for the first storage system (2600) switching to a differentreplication scheme. Further, in some instances, such a change in networkperformance or network characteristics may or may not be related totransport or movement of the first storage system (2600).

In some implementations, with regard to switching replication schemesresponsive to changing networks, a given replication scheme may have anassociated network profile of communication requirements. For example, anetwork profile for a given replication scheme may specify, among othercriteria, minimum bandwidth requirements, security levels, resiliencyspecifications, or minimum and/or maximum network latency values. Inthis example, a respective network profile corresponding to eachrespective replication scheme may be used in selecting a replacementreplication scheme in response to changes in network performance ornetwork characteristics.

Continuing with this example implementation, the first storage system(2600) may, responsive to detecting that available communication linksare unable to support, or consistently support, synchronous replication,switch to a different replication scheme, such as periodic replication,or some other data replication scheme that may be supportable given thebandwidth on the available communication networks.

In this way, in some examples, some level of data replication maycontinue during transport of the first storage system (2600) from afirst physical location to a physical destination location. In otherwords, some quantity of dataset (2660) updates may continue to beapplied to the dataset (2660) on the first storage system (2600), butnot all dataset (2660) updates may be made that are being made on thesynchronously replicated dataset (2760) among the cluster of storagesystems at the first physical location.

Further, in this example, upon arrival, because some quantity of dataset(2660) updates continued at the first storage system (2600) duringtransport, synchronizing the dataset (2660) after the first storagesystem (2600) arrives at the physical destination location will takeless time than if all updates to the dataset (2660) had to be made.

Further still, after arrival of the first storage system (2600) at thephysical destination location, and after the first storage system (2600)is physically connected to one or more physical networks at the secondphysical location, the first storage system (2600) may detectavailability of the available networks. In this example, in response todetecting availability of the available networks at the second physicallocation, the first storage system (2600) may switch to a differentreplication scheme, which in this example may be synchronousreplication.

In this way, in this example, after the first storage system (2600),over the higher-bandwidth network, synchronizes the local dataset (2660)with the dataset (2670) being synchronously replicated among the clusterof storage systems, the first storage system (2600) may continuesynchronization of the dataset (2660) on the first storage system(2600).

In some implementations, a first storage system (2600) may be a storagesystem, such as storage systems described above with reference to FIGS.1A-25. For example, a first storage system (2600) may include the same,fewer, or additional components as the storage systems described above.

In some implementations, a first storage system (2600) may be configuredsuch that it may continue operation in response to be physicallydisconnected from a physical location. For example, a first storagesystem (2600), in addition to including components for implementing astorage system, such as storage systems described above, may alsoinclude a power supply. In some examples, the power supply may be abattery, and in other examples, a power supply may be based ongenerating power by capturing and converting kinetic energy, or based ongenerating power from the use of solar cells. Further, in some examples,the first storage system (2600) may have an external power sourceavailable during transport. This external power source associated withtransport may also provide for less than the full power demands of thestorage system, so the storage system may operate in a low power mode,even if the amount of power is greater than might be the case fromrunning purely on internal batteries.

In some implementations, the first storage system (2600) may includemultiple network ports for physical network connections in accordancewith the multiple physical networks described above with reference toFIGS. 4A-25. Further, the first storage system (2600) may includenetwork ports for establishing wireless communication links over acellular network or mobile network, such as 4G, 5G, or LTE, provided bytelecommunication providers.

In other examples, the first storage system (2600) may include networkports for establishing wireless communication links over a wirelessnetwork, such as an Institute of Electrical and Electronics Engineers(IEEE) 802.11 wireless network, among others. In some examples, as afirst storage system (2600) moves from one location to another location,different wireless networks may become available, and the first storagesystem (2600) may switch between network transport layers as describedabove with reference to FIGS. 9-25. In some embodiments, the firststorage system (2600) may only include LAN/SAN ports and may beconnected to a local switch that enables wireless communications, as thefirst storage system (2600) may be connected to the local switch that isconfigured for wireless communications, such that the local switcheffectively translates wired communications exchanged between the firststorage system (2600) and the local switch to wireless communicationsexchanged between the local switch and other devices.

Continuing with this example, in some implementations, the first storagesystem (2600) may use the common management model to provide differentreplication schemes a consistent, and uniform interface to disparate, ordifferent, underlying network messaging mechanisms. For example, amongmultiple network ports of the first storage system (2600), one networkport may be connected to a TCP/IP network, and another network port maybe connected to a Fibre Channel network. Similarly, the first storagesystem (2600) may include additional network ports may provide supportfor additional physical or wireless communication links in accordancewith one or more underlying network messaging mechanisms.

In some implementations, a first storage system (2600) may implementmultiple, distinct types of replication schemes. In some examples,distinct replication schemes may include, among others not listed,synchronous replication, nearly synchronous replication, asynchronousreplication, configurable asynchronous replication, snapshot-basedreplication, continuous data replication, periodic replication, or acombination of configurable asynchronous data replication anddynamically determined snapshot updates. Examples of various ones ofthese replication schemes are described above with reference to FIGS.4A-8.

In some implementations, the above-listed replication schemes may beimplemented based on a common or uniform management model, where thecommon management model includes a same or similar metadata model forrepresenting stored data, such as the metadata representation describedabove with reference to FIG. 4B. For example, in some implementations, afirst storage system (2600) may use each of the above-listed replicationschemes to establish a replication relationship among one or more otherstorage systems, where implementation of a given replication scheme isbased on a management model that is common to all storage systemsparticipating in a replication relationship, where the common managementmodel may be used to implement each of the above-listed replicationschemes.

Further, in some implementations, based on the common management modelfor the different replication schemes, whether a first storage system(2600) is implementing asynchronous replication, synchronousreplication, or some other replication scheme listed above, thereplication scheme specifications are the same for network communicationwith another storage system. For example, as discussed above, a givenreplication scheme may not be aware of network communication detailsbelow a network transport mechanism, and consequently, whether theunderlying media layer is different kinds of wireless networks ordifferent kinds of physical networks, the given replication schemehandles communication commands to implement a given replication schemesimilarly.

In some implementations, a replication relationship is established whena first storage system (2600) begins replicating data with anotherstorage system, where the first storage system (2600) may have its owninternal management of data structures for defining storage objects,mapping objects to physical storage, deduplication, for defining mappingof content to snapshots, and other management tasks related toreplicating data. In this way, while a common management model is usedby all members of a replication relationship, individual membersmaintain management of local management information that uses the commonmanagement model.

In some implementations, a replication relationship may be specified bya replication policy. In some examples, a replication policy may beconsidered a management object that specifies how a first storage system(2600) handles data replication in response to changes or in response toanticipated changes in network conditions, such as network bandwidth,network health, network latencies, types of networks.

For example, a first storage system (2600) may use a replication policyto specify conditions or rules that determine modifications to thebehavior of a replication scheme, that determine switching betweenreplication schemes, both modifying behavior of a replication scheme andswitching between different networks, or both switching betweenreplication schemes and switching between different networks.

In some implementations, a first storage system (2600) may, based on areplication policy, determine that if a Fibre Channel network isavailable, then a replication scheme to use with another storage systemmay be a synchronous replication scheme. Further, in this example, thereplication policy may specify that the first storage system (2600)continue synchronous replication scheme unless there are changes to thehealth of the network, changes to available bandwidth, or changes tonetwork latency.

Further, in some implementations, a first storage system (2600) may,based on a replication policy, responsive to synchronizing a dataset(2660) with a synchronous replication scheme, that the replicationscheme switch to a different replication scheme, such as asynchronousreplication, snapshot-based replication, or any of the otherabove-listed replication schemes.

In some implementations, based on replication policy, a first storagesystem (2600) may, in addition to or instead of responding to networkconditions by switching networks, respond to changes in network loads ornetwork traffic patterns. For example, a replication policy may specifythat in response to network bandwidth availability that drops below aspecified threshold, a replication scheme—without switching networks orswitching between messaging layers—switch from a current replicationscheme to a replication scheme that uses less network bandwidth. Forexample, the replication policy may specify a switch from usingsynchronous replication to snapshot-based replication, or some othertype of lower bandwidth consumption replication scheme.

In some implementations, a first storage system (2600) may, based on areplication policy, determine that responsive to switching from anexternal power supply to an internal power supply, switch replicationschemes from a current replication scheme to a replication scheme thatuses less power. For example, a first storage system (2600) may,responsive to switching to an internal battery power supply, switch fromsynchronous replication to periodic snapshot replication, or some otherlow-power replication scheme.

Readers will appreciate that the storage systems described above may besimilar to any of the storage systems described with reference to FIGS.1A-3C, including variations of such systems that include additional orfewer components, including combinations thereof. Likewise, the storagesystems described above can even be implemented as an Amazon S3 targetor other replication target in a cloud environment.

Advantages and features of the present disclosure can be furtherdescribed by the following statements:

-   -   1. A method comprising: replicating, between a first storage        system and a second storage system that are both located at a        first physical location, a dataset; connecting, by the first        storage system and responsive to movement of the first storage        system to an intermediate physical location, to a communication        network available at the intermediate physical location; and        continuing, between the first storage system at the intermediate        physical location and the second storage system at the first        physical location, replication of the dataset over the        communication network available at the intermediate physical        location.    -   2. The method of statement 1, further comprising: establishing a        replication scheme between the first storage system and the        second storage system that includes replicating, between the        first storage system and the second storage system, updates to        the dataset that are received at either the first storage system        or the second storage system; wherein the replication scheme        synchronously or asynchronously maintains consistency between a        version of the dataset stored on the first storage system and a        version of the dataset stored on the second storage system.    -   3. The method of statement 2 or statement 1, further comprising:        determining network characteristics of the communication network        available at the intermediate physical location; and        determining, based on the network characteristics of the        communication network available at the intermediate physical        location, that the communication network available at the        intermediate physical location provides lower bandwidth than the        communication network available at the first physical location.    -   4. The method of statement 3, statement 2, or statement 1,        further comprising: selecting, responsive to the communication        network available at the intermediate physical location relative        providing lower bandwidth than the communication network        available at the first physical location, a low-bandwidth        replication scheme from among a plurality of replication        schemes.    -   5. The method of statement 4, statement 3, statement 2, or        statement 1, further comprising: transitioning, without        terminating replication of the dataset and responsive to        selecting the low-bandwidth replication scheme, the first        storage system from using a current replication scheme to using        the low-bandwidth replication scheme.    -   6. The method of statement 5, statement 4, statement 3,        statement 2, or statement 1, further comprising: selecting,        based on a change in network availability at the intermediate        physical location and on expected performance improvement        replicating the dataset, a replacement replication scheme; and        transitioning, responsive to selecting the replacement        replication scheme, from the low-bandwidth replication scheme to        the replacement replication scheme.    -   7. The method of statement 6, statement 5, statement 4,        statement 3, statement 2, or statement 1, further comprising:        determining, relative to the first physical location, lower        power availability at the intermediate physical location; and        transitioning, based on the lower power availability at the        intermediate physical location, the first storage system from        using a current replication scheme to using a low-power        replication scheme.    -   8. The method of statement 7, statement 6, statement 5,        statement 4, statement 3, statement 2, or statement 1, wherein        the current replication scheme and the low-power replication        scheme are based on a common management model.    -   9. The method of statement 8, statement 7, statement 6,        statement 5, statement 4, statement 3, statement 2, or statement        1, wherein the first physical location of the first storage        system is within a geographically fixed data center, and wherein        the intermediate physical location of the first storage system        is a vehicle or a shipping container.    -   10. The method of statement 9, statement 8, statement 7,        statement 6, statement 5, statement 4, statement 3, statement 2,        or statement 1, further comprising: responsive to arrival of the        first storage system to a destination physical location:        synchronizing, with the second storage system replicating the        dataset, the dataset with the second storage system to overcome        any lags in synchronization of the dataset on the first storage        system during transport between the first physical location and        the physical destination location.    -   11. The method of statement 10, statement 9, statement 8,        statement 7, statement 6, statement 5, statement 4, statement 3,        statement 2, or statement 1, wherein the third physical location        is a local, on-premises data center.    -   12. A first storage system comprising one or more storage        devices; one or more network ports; and a storage controller,        wherein the storage controller is configured to: replicate,        between the first storage system and a second storage system        that are both located at a first physical location, a dataset;        connect, by the first storage system and responsive to movement        of the first storage system to an intermediate physical        location, to a communication network available at the        intermediate physical location; and continue, between the first        storage system at the intermediate physical location and the        second storage system at the first physical location,        replication of the dataset over the communication network        available at the intermediate physical location.

One or more embodiments may be described herein with the aid of methodsteps illustrating the performance of specified functions andrelationships thereof. The boundaries and sequence of these functionalbuilding blocks and method steps have been arbitrarily defined hereinfor convenience of description. Alternate boundaries and sequences canbe defined so long as the specified functions and relationships areappropriately performed. Any such alternate boundaries or sequences arethus within the scope and spirit of the claims. Further, the boundariesof these functional building blocks have been arbitrarily defined forconvenience of description. Alternate boundaries could be defined aslong as the certain significant functions are appropriately performed.Similarly, flow diagram blocks may also have been arbitrarily definedherein to illustrate certain significant functionality.

To the extent used, the flow diagram block boundaries and sequence couldhave been defined otherwise and still perform the certain significantfunctionality. Such alternate definitions of both functional buildingblocks and flow diagram blocks and sequences are thus within the scopeand spirit of the claims. One of average skill in the art will alsorecognize that the functional building blocks, and other illustrativeblocks, modules, and components herein, can be implemented asillustrated or by discrete components, application specific integratedcircuits, processors executing appropriate software and the like or anycombination thereof.

While particular combinations of various functions and features of theone or more embodiments are expressly described herein, othercombinations of these features and functions are likewise possible. Thepresent disclosure is not limited by the particular examples disclosedherein and expressly incorporates these other combinations.

What is claimed is:
 1. A method comprising: replicating, between a firststorage system and a second storage system that are both located at afirst physical location, a dataset; connecting, by the first storagesystem, during movement of the first storage system to a second physicallocation through a set of intermediate physical locations, to acommunication network available at one or more of the intermediatephysical locations; and continuing the replicating of the datasetbetween the first storage system at one or more of the intermediatephysical locations and the second storage system at the first physicallocation, over the communication network available at one or more of theintermediate physical locations.
 2. The method of claim 1, whereinreplicating the dataset comprises: establishing a replication schemebetween the first storage system and the second storage system thatincludes replicating, between the first storage system and the secondstorage system, updates to the dataset that are received at either thefirst storage system or the second storage system; wherein thereplication scheme synchronously or asynchronously maintains consistencybetween a version of the dataset stored on the first storage system anda version of the dataset stored on the second storage system.
 3. Themethod of claim 1, further comprising: determining networkcharacteristics of the communication network available at one or more ofthe intermediate physical locations; and determining, based on thenetwork characteristics of the communication network available at one ormore of the intermediate physical locations, that the communicationnetwork available at one or more of the intermediate physical locationsprovides lower bandwidth than the communication network available at thefirst physical location.
 4. The method of claim 3, further comprising:selecting, responsive to the communication network available at one ormore of the intermediate physical locations providing lower bandwidththan the communication network available at the first physical location,a low-bandwidth replication scheme from among a plurality of replicationschemes.
 5. The method of claim 4, further comprising: transitioning,without terminating replication of the dataset and responsive toselecting the low-bandwidth replication scheme, the first storage systemfrom using a current replication scheme to using the low-bandwidthreplication scheme.
 6. The method of claim 5, further comprising:selecting, based on a change in network availability at one or more ofthe intermediate physical locations and on expected performanceimprovement replicating the dataset, a replacement replication scheme;and transitioning, responsive to selecting the replacement replicationscheme, from the low-bandwidth replication scheme to the replacementreplication scheme.
 7. The method of claim 1, further comprising:determining, relative to the first physical location, lower poweravailability at one or more of the intermediate physical locations; andtransitioning, based on the lower power availability at one or more ofthe intermediate physical locations, the first storage system from usinga current replication scheme to using a low-power replication scheme. 8.The method of claim 7, wherein the current replication scheme and thelow-power replication scheme are based on a common management model. 9.The method of claim 1, wherein the first physical location of the firststorage system is within a geographically fixed data center, and whereinthe one or more intermediate physical locations of the first storagesystem is within a vehicle or a shipping container.
 10. The method ofclaim 1, further comprising: responsive to arrival of the first storagesystem to a physical destination location: synchronizing, with thesecond storage system replicating the dataset, the dataset with thesecond storage system to overcome any lags in synchronization of thedataset on the first storage system during transport between the firstphysical location and the physical destination location.
 11. A storagesystem comprising: one or more storage devices; one or more networkports; and a storage controller comprising a computer processor, whereinthe storage controller is configured to: replicate, between a firststorage system and a second storage system that are both located at afirst physical location, a dataset; connect, by the first storagesystem, during movement of the first storage system to a second physicallocation through a set of intermediate physical locations, to acommunication network available at one or more of the intermediatephysical locations; and continue the replicating of the dataset betweenthe first storage system at one or more of the intermediate physicallocations and the second storage system at the first physical location,over the communication network available at one or more of theintermediate physical locations.
 12. A computer program product disposedupon a non-transitory computer readable medium, the computer programproduct comprising computer program instructions that, when executed,cause a computer to carry out the steps of: replicating, between a firststorage system and a second storage system that are both located at afirst physical location, a dataset; connecting, by the first storagesystem, during movement of the first storage system to a second physicallocation through a set of intermediate physical locations, to acommunication network available at one or more of the intermediatephysical locations; and continuing the replicating of the datasetbetween the first storage system at one or more of the intermediatephysical locations and the second storage system at the first physicallocation, over the communication network available at one or more of theintermediate physical locations.
 13. The computer program product ofclaim 12, further comprising computer program instructions that, whenexecuted, cause the computer to carry out the steps of: determiningnetwork characteristics of the communication network available at theintermediate physical location; and determining, based on the networkcharacteristics of the communication network available at theintermediate physical location, that the communication network availableat the intermediate physical location provides lower bandwidth than thecommunication network available at the first physical location.
 14. Thecomputer program product of claim 13, further comprising computerprogram instructions that, when executed, cause the computer to carryout the steps of: selecting, responsive to the communication networkavailable at the intermediate physical location providing lowerbandwidth than the communication network available at the first physicallocation, a low-bandwidth replication scheme from among a plurality ofreplication schemes.
 15. The computer program product of claim 14,further comprising computer program instructions that, when executed,cause the computer to carry out the steps of: transitioning, withoutterminating replication of the dataset and responsive to selecting thelow-bandwidth replication scheme, the first storage system from using acurrent replication scheme to using the low-bandwidth replicationscheme.
 16. The computer program product of claim 15, further comprisingcomputer program instructions that, when executed, cause the computer tocarry out the steps of: selecting, based on a change in networkavailability at the intermediate physical location and on expectedperformance improvement replicating the dataset, a replacementreplication scheme; and transitioning, responsive to selecting thereplacement replication scheme, from the low-bandwidth replicationscheme to the replacement replication scheme.
 17. The computer programproduct of claim 12, further comprising computer program instructionsthat, when executed, cause the computer to carry out the steps of:determining, relative to the first physical location, lower poweravailability at the intermediate physical location; and transitioning,based on the lower power availability at the intermediate physicallocation, the first storage system from using a current replicationscheme to using a low-power replication scheme.
 18. The computer programproduct of claim 17, wherein the current replication scheme and thelow-power replication scheme are based on a common management model. 19.The computer program product of claim 12, wherein the first physicallocation of the first storage system is within a geographically fixeddata center, and wherein the intermediate physical location of the firststorage system is a vehicle or a shipping container.
 20. The computerprogram product of claim 12, further comprising computer programinstructions that, when executed, cause the computer to carry out thesteps of: responsive to arrival of the first storage system to aphysical destination location: synchronizing, with the second storagesystem replicating the dataset, the dataset with the second storagesystem to overcome any lags in synchronization of the dataset on thefirst storage system during transport between the first physicallocation and the physical destination location.